之前写过一篇文章,是解决弹框显示的时候, body 不允许滑动,思路大致如下:
弹框显示时,设置 html 和 body overflow:hidden ,并阻止浏览器的默认行为;
弹框隐藏时,设置 html 和 body overflow:auto ,并方法浏览器默认行为。
但是这种办法当弹框里面的内容也需要滑动的时候,是滑动不了的,因为已经阻止了浏览器的默认滑动行为。
后来针对这种需求的解决办法为:
1.页面滑动时,获取外层盒子的 scrollTop ,弹框显示时设置滚动盒子 position:fixed , top 为外层盒子当前 scrollTop
2.取消弹框时恢复滚动盒子 position:relative;top:0; ,外层盒子赋值 scrollTop 为原来的 scrollTop
这样既阻止了主体内容的滚动,同时又不影响弹框内容的滚动。
如有表述不准确之处,欢迎指正,欢迎补充,感谢阅读。