扫码关注官方订阅号
前端移动端开发, 在页面中打开了一个层,同时打开一个遮罩层, 滚动这个层时 下面的页面也会跟着滚动.怎么禁止下面那个页面的滚动, 只滚动当前的层.
欢迎选择我的课程,让我们一起见证您的进步~~
我的做法是阻止touchstart事件的默认行为,不知道有没有更好的方法.在vue下@touchstart.prevent可以这样,在弹出层和底层元素之间曾加一层遮罩
<p>底层</p> <p class="mask">遮罩层</p> <p>弹出层</p>
然后
.mask{position:fixed;left:0;top:0;right:0;bottom:0}
$('.mask').on('touchmove',function(e){e.preventDefault()})
打开弹层时body的touchmove事件addEventListener增加阻止默认行为的事件,关闭弹层时removeEventListener
这个还得确定一下那个弹出层是你自己写的还是插件,如果是你自己写的,就把对应的touchmove/mousemove事件通过添加事件监听器addEventListener阻止一下默认事件。如果是插件,就两个都加上。
禁止滚动的层设置overflow:hidden看看?
现在的解决办法是修改body的position为fixed, 弹窗消失的时候再恢复就行了。
js,或者给body设置一屏高度,再设置overflow:hidden
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
我的做法是阻止touchstart事件的默认行为,不知道有没有更好的方法.
在vue下
@touchstart.prevent
可以这样,
在弹出层和底层元素之间曾加一层遮罩
然后
然后
打开弹层时body的touchmove事件addEventListener增加阻止默认行为的事件,关闭弹层时removeEventListener
这个还得确定一下那个弹出层是你自己写的还是插件,如果是你自己写的,就把对应的touchmove/mousemove事件通过添加事件监听器addEventListener阻止一下默认事件。如果是插件,就两个都加上。
禁止滚动的层设置overflow:hidden看看?
现在的解决办法是
修改body的position为fixed, 弹窗消失的时候再恢复就行了。
js,或者给body设置一屏高度,再设置overflow:hidden