解决遮罩层上方元素可以滚动禁止遮罩层下方滚动问题

**

解决遮罩层上方元素可以滚动禁止遮罩层下方滚动问题

1.有兼容性问题,苹果和安卓低版本滑动时屏幕上下部分会闪动

打开遮罩层时:
document.documentElement.style.overflowY = ‘hidden’; //禁止底层div滚动
关闭遮罩层时:
document.documentElement.style.overflowY = ‘auto’; //取消禁止屏幕滚动

2.有兼容性问题,苹果和安卓低版本滑动时屏幕上下部分会闪动

在打开遮罩层时:
document.body.style.overflow = ‘hidden’
在关闭遮罩层时:
document.body.style.overflow = ‘scroll’

3.在vue中

如果不要求遮罩层滚动,那么就直接给遮罩层最外层元素添加:
@touchmove.prevent

4.通过css控制

存在问题:当打开遮罩层时页面会回滚到最顶部
在打开遮罩层时:
document.body.style.overflow = ‘hidden’
document.body.style.width = ‘100%’
document.body.style.height = ‘100%’
document.body.style.position = ‘fixed’
在关闭遮罩层时:
document.body.style.overflow = ‘scroll’
document.body.style.width = ‘100%’
document.body.style.height = ‘100%’
document.body.style.position = ‘relative’

5.所有机型都兼容的写法

在打开遮罩层时:
document.body.style.position = ‘fixed’
document.body.style.overflow = ‘hidden’
注意:当打开遮罩层时,底部的页面会返回最顶部
在关闭遮罩层时:
document.body.style.overflow = ‘scroll’
document.body.style.position = ‘relative’
window.scrollTo({ top : 10000})
当关闭遮罩层时将页面滚动到底部,如果有要求页面停到某个位置的,就需要在打开遮罩层定位之前就将主页面当前位置向上滚动的距离保存到变量scrollTop中,在关闭遮罩层后将当前页面的window.scrollTo({ top : scrollTop})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值