什么是滚动穿透:
滚动穿透是指在弹出层或模态框等浮动层出现时,背景页面仍然可以滚动的现象
滚动穿透的原理:
一个页面中,如果有一个脱离文档流的弹窗,并且弹窗在页面的上方,在移动端做滑动动作,如果弹窗滑动到最上端或者最下端,滚动事件也会冒泡传递给背景页面,造成背景页面的滚动。
例子如下:
如果在蓝色区域滑动,当在蓝色区域滑动到顶部或者底部时,滑动事件会冒泡到背景页面上,造成背景页面的滑动。
为了解决这个问题,可以用以下方案实现:
将html,body高度设置为100%,蒙层打开时,将body设置为overflow: hidden,此时背景无法滚动,关闭蒙层,设置body为overflow:auto,可以继续滚动。
同时增加-webkit-overflow-scrolling: touch;,兼容ios上滑动卡顿问题。