微信打开网页有弹出层内容(带滚动条),弹出层滚动的时候如何阻止body页面的滚动呢?
如题:项目中有弹出层内容,弹出层内容也比较多,带滚动条,body内容同样带滚动条,如何在滚动弹出层内容的时候,防止body也滚动呢?
查过相关方法,一下方法是不可行的:
1.给html,body都加上height:100%.overfloe:hidden!这种方法会造成打开弹出层,body的内容就好返回到顶部,不可行!
2.添加冒泡阻止,亲测,不可行!
下面是我的在线demo:http://1.csys.applinzi.com/
请问应该怎么做?
最后提醒下 浏览器测试很多都可以,但是微信端打开网页都不行的!谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
出现遮罩层给 body 加 modal-open,阻止滚动穿透,取消遮罩层移除 modal-open
js
css
我项目中都这样用,可以记录滚动位置,
可以参考大师张鑫旭的博客直达链接
弹出时body和html添加css touch-action:none;关闭时touch-action:auto;
手机有点击穿透 ,你搜下怎么防止点击穿透 ,不行你用别人的框架
你可以试试弹出遮罩层的时候设置body,html height:90%,overflow:hidden。
以前在 PC 年代是给弹层后面的蒙层添加一个全屏的
iframe
来避免滚动影响。移动端没尝试过,不过,我们团队曾经讨论过这个问题,我现在刻有两种:弹层添加
touchstart
事件,并在回调中加e.preventDefault()
阻止所有的滚动,然后弹窗内的滚动由 js 来实现;弹窗的时候把 body 的添加个样式:position: fixed;
相对来说,第2种比较容易实现,第1种你可以借用 iscroll 等插件实现弹层滚动。
设备 ios
今天在弄弹出层的滚动时,发现用overflow-y:scroll 弄出来的滚动条,滑动时并不平滑。并且弹层中滚动条滑到底部时,再继续滑动body的滚动条也会动。导致弹层消失时body滚动条位置不对
偶然百度到
-webkit-overflow-scrolling : touch;
把这个属性放到弹层的滚动条中。首先,ios的滚动平滑了,并且意外发现任意滑动弹层中的滚动区域,都不会影响到body的滚动条了。
试试