如何阻止IOS触摸滚动效果--“橡皮筋效果”?

浏览器在移动端有一个默认触摸滚动的效果,下拉时自带橡皮筋的效果。在开发的时候我们经常需要阻止此效果。
解决方案:

document.body.addEventListener('touchmove', function(e) {
		if (e._isScroller) return;
		e.preventDefault();//阻止默认的处理方式(阻止下拉滑动的效果)
	}, {
		passive: false  
	});//passive 参数不能省略,用来兼容ios和android
 

如果不加passive:false,在 ios 上是不能起作用的。

浏览器内核介绍:

  1. Chrome 默认的事件监听参数:
    在这里插入图片描述

useCapture:false 表示事件采用冒泡机制(capture 译为 捕获),浏览器默认就是false;
passive:false表示我现在主动告诉浏览器该监听器将使用e.preventDefault()来阻止浏览器默认的滚动行为(可以提高运行速度)。

  1. Safari 默认的事件监听参数:
    在 Safari 中,有一个更新:

Updated root document touch event listeners to use passive mode improving scrolling performance and reducing crashes
更新了根文档触摸事件侦听器,默认使用passive:true提高滚动性能并减少崩溃

所以Safari 中默认使用了passive:true,告诉浏览器,此监听事件中,不会阻止默认的页面滚动。这将导致设置的e.preventDefault()代码失效。

所以 Safari 默认是不会阻止滚动的。

  1. 结论
    我们通过e.preventDefault();阻止默认的下拉滑动的效果,通过添加passive:false 参数来兼容各个浏览器。即可实现阻止移动页面滚动的功能。

参考文章:添加链接描述

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值