移动端事件穿透:点击穿透和滑动穿透

前些日子面试的时候被问及移动端的滑动穿透问题,当时没有滑动穿透的概念(其实平时的工作从滑动穿透的问题已经默认解决掉了),上网查了一下,所以有了以下的个人小结:

移动端事件穿透:点击穿透||滑动穿透

移动端,手指点击一个元素,会经过:touchstart --> touchmove --> touchend --> click

点击穿透: click 事件机制:延迟300ms执行,主要为了区别移动端 double tap 事件

场景:
  • 当前页面点击蒙层,蒙层消失,蒙层下的dom的点击事件被触发
  • 跨页面点击,点击当前页面的dom元素,跳转至新页面,新页面的当前位置的click事件被触发
解决方案:
  1. 当前dom的click事件延迟(大于300ms)执行即可
  2. 使用 touchend 事件(此时需要主页 a href 属性默认就是 click 事件)
  3. fastclick 库

滑动穿透:

场景:
  • 固定定位的遮罩层下方的dom结构超出屏幕宽度,遮罩层显示时下方的dom结构依然可以滚动
解决方案:
  1. 遮罩层阻止默认 touchmove 事件
$('.modals').on('touchmove', function(event) {
    event.preventDefault();
});
  1. 遮罩层显示时处理 body{overflow:hidden;},一定要在关闭遮罩层时处理掉 body{overflow: initial;}
  2. fastclick 库
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值