javascript - 怎么样防止兄弟元素的滚动
迷茫
迷茫 2017-04-11 11:24:30
[JavaScript讨论组]

遇到一个问题,写一个手机页面。
在body中有两个元素:一个元素content,用来显示页面主题内容;一个元素师content的兄弟元素,用来显示弹出的model页面遮罩。
现在遇到的问题,在model页面中有个列表能够上下滚动,但是滚动到最上端时,兄弟元素content也开始向上滚动;model页面滚动到最下端时,content也开始向下滚动。
理想的状态是,无论model怎么样滚动,content都必须不能动。
查看京东网页版app,也有此问题。
亲们,可有解决方案。已经尝试了在model里面设置touchmove 阻止冒泡,然并卵。

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(4)
PHP中文网

position:fixed;固定定位

伊谢尔伦

这个问题我遇到过。在model弹出的时候,你就给content设置一个overflow:hidden和position:fixed,model关闭的时候,再设置回来。但是,这样也有一个问题,ios的Safari浏览器会有一个小bug:在你关闭model的时候滑动content可能需要先点击一下这个content,否则就会滑不动。所以,很多移动端的弹窗都会选择不管content的滑动。实际上这对用户体验也没有什么影响。

伊谢尔伦

一个比较死板一点的方法,你一点击那个model遮罩层的时候,就给body或者content加上overflow:hidden;,关闭的时候就改成overflow:auto;

PHPz

监听 onscroll 事件,判断scrollTop是否滚动到顶部,滚动到顶部就把 scrollTop 设置为 1
下面是伪代码

model.addEventListener('scroll',() =< {
    if(model.scrollTop <= 1){
      model.scrollTop = 1
    }
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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