javascript - 移动端如何禁用底层的滚动事件,保证弹出层的滚动事件正常运行?
PHP中文网
PHP中文网 2017-04-11 12:05:06
[JavaScript讨论组]

尝试过body,html加属性overflow:hidden,pc端可以,移动端不行

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(5)
PHP中文网

用$("body").bind("touchmove",function(event){event.preventDefault;//code});取消了body的拖动事件。

恢复这个拖动事件只要$("body").unbind("touchmove");

大家讲道理

弹出的遮罩层可以修改为:

{
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
}

然后在弹出层禁用touchmove。
也可以通过禁止冒泡也可以。

大家讲道理

有很多方法,常见的

$('body').css({
    overflow: 'hidden',
    height: $(window).height() + 'px'
})
// 因为body的高度等于了window的高度,所以滚动自然就无法进行了,如果需要滚动了,只需要把高度从style标签上面移除就好了
$('body').css({
    overflow: null,
    height: null
}) // 删除style中相应的属性
天蓬老师

目前我找到的最合适的方法是:判断event.srcElement是否为弹出层的子元素,如果是则不禁用body的默认事件,如果不是则禁用body的默认事件,当然还是会有bug

天蓬老师

body加上position:relative,在移动端overflow:hidden就会生效

html, body {
    position: relative;
    height: 100%;
    overflow: hidden;
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号