移动端部分坑
1.部分机型touchmove事件不连续触发
Android的事件每次都要经过浏览器内核再发往UI线程,为了提高效率,如果浏览器内核中没有设置preventDefault,Android就认为该页面元素不需要touchmove事件,于是下次的事件就不经过内核,直接发往UI线程,于是js中就捕获不到touchmove事件。
解决方案:在事件响应的地方设置preventDefault,这样就可以源源不绝地接收到touch事件,比如在touchstart事件中执行e.preventDefault(),touchmove事件就会连续触发。但是这种做法会取消掉浏览器其他的默认行为,比如页面默认的滚动。。。
2.字号小于12px,或字号不是偶数,部分机型文字无法居中的问题
解决方案:使用transform: scale(0.5)进行缩放 or 字号大一点
3.点透
移动端的 click 触发顺序是touchstart->touchmove->touchend->mousedown->mousemove->mouseenter->click。
在重叠的区域里,被遮盖的元素绑定click,遮盖的元素绑定touch事件,且touch后遮盖的元素会隐藏的话,就会造成穿透,因为click是在touch之后延迟触发的,浏览器会误认为是在遮盖的元素上触发了click。
解决方案:fastclick or point-event:none。

浙公网安备 33010602011771号