移动端弹窗如何阻止body滚动

 时间:2024-11-04 22:01:25

1、弹出层出现时给body添加一个css样式:height:100%;overflow:hidden;弹出层消失再去掉这个类。测试结果:chrome手机模拟器还真可以,but到了我的安卓手机上。

移动端弹窗如何阻止body滚动移动端弹窗如何阻止body滚动

2、之后又看到有人提到,是要html也设置同样的样式才会有效果,所以同样给html添加了这个类,弹出层消失时去掉这个类。

移动端弹窗如何阻止body滚动

3、测试结果:效果是有了,弹出层内可以滚动,底层不滚动了,but当弹出层出现,底层body会回到页面顶部,这个并不是我想要的。

移动端弹窗如何阻止body滚动

4、弹出层出现时给body添加样式position:fixed,并算出当时页面的scrollTop滚动值,给body一个负的top值来保证body不会回到顶部,弹出层消失时恢复。

移动端弹窗如何阻止body滚动移动端弹窗如何阻止body滚动

5、无意中发现定位层之间好像是不会传递事件的,将弹窗之外的元素包在一个div里,给这个div设置定位样式,给宽高是充满屏幕的,设置overflow:auto;这样这个div和弹出层就是两个定位层,滑动弹出层时不会传递到div上的。

移动端弹窗如何阻止body滚动

6、给div设置以上两种其中一种样式就可以,第一种的bottom:0和第二种height:100%都是为了固定div的高度是屏幕的高度,overflow:auto使滚动发生在div内部,这样弹出层的滚动就不会传递给div了,如果不给设置高度,弹出层的滚动事件仍然会传递给body,div就会随着body滚动。

移动端弹窗如何阻止body滚动
  • 早餐吐司披萨的做法
  • 肌肉放松训练方法
  • 韩国人如何学汉语
  • 鲜银耳雪梨甜汤
  • 如果使用bus365购买长途汽车票?
  • 热门搜索
    杭州旅游集散中心 广东旅游地图 去北京旅游 一起旅游 山西 旅游 厦门鼓浪屿旅游 贵州荔波旅游 镇远古镇旅游攻略 洪泽湖旅游 宁夏旅游网