微信小程序:惊!CSS导致JS事件未触发...

前言

研究navigationStyle:costom,使用自定义的导航。老规矩,先上设计稿:

设计稿

要实现左侧的自定义导航,该导航有一个圆角的边框,圆角的啊~

开始

移动端经典的1px问题+圆角边框。早期,在.less文件中定义了.border-1px()用于解决移动端1px问题,后期为了兼容圆角边框,又添加了几个变量。

// 添加一个设置圆角的
.border-1px(@color: #ddd, @pos: bottom, @radius: 0rpx) when (@pos = all){
	// 父元素
	position: relative;
	&::after{
		display: block;
		content: '';
		position: absolute;
		top: 0;
		left: 0;
		border: 1px solid @color;
		box-sizing: border-box;
		width: 200%;
		height: 200%;
		border-radius: @radius*2;
		transform: scale(0.5);
		transform-origin: left top;
	}
}

其实是用伪元素+缩放+定位实现了圆角的效果。样式是可以实现的,但是为小图标添加绑定的点击事件,一直没有被触发

实践

遇到问题,解决问题。

首先是排查事件绑定是否有效,其次定义测试元素,为测试元素绑定事件,查看事件是否生效。最后,发现,在导航内容外部,定义元素,绑定事件,是OK的~

问题还是出在导航元素上,排查、排查,在CSS中发现了.border-1px()。。。原来是生成的伪元素,覆盖了导航中的元素,导致点击事件没法触发

如何解决呢,既要有框又要圆角?

直接使用border: ;实现会有1px的问题,视觉效果差,最终的解决方案是box-shadow: 0 0 1rpx 0 #ccc。既有边框效果,点击事件也能正常被触发。

总结

一行CSS代码竟然影响了JS事件的触发,排查起来还真的耐人寻味。发现问题,分析问题,解决问题,加油↖(^ω^)↗

嘘寒问暖 不如打笔巨款~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值