移动端页面弹窗后,底部页面还能继续滑动解决方案

背景:页面本身具备滚动条,弹窗后,还是能继续滑动底部的页面,体验不好。

解决方案一:弹窗后将底部页面设置overflow:hide;当弹窗结束后又重新设置回overflow:auto/scroll
这个方案大家都比较熟悉,虽然能解决问题,但是又存在的另外一个问题。那就是但你页面浏览到底部的时候,你页面设置overflow:hidden;页面瞬间回到了顶部。这样的体验感觉也是够奇怪的了~所以我们还是来看下面一种方案,也是比较推荐的一种。

方案二:弹窗后将整个弹窗阻止手指滑动(touchmove)的默认。
实现代码:(假设弹窗最外层的类名为masker)

  const masker = document.querySelector('masker')
  masker.addEventListener('touchmove',(e) => {
    e.preventDefault()
  },false)

这样底部的页面就不能滑动了,关闭弹窗后,则能正常滑动。但是这里也有一个弊端就是,有的情况你的弹窗也是需要滑动来浏览内容,也就是说你的弹窗是有滚动条的。这样的设置导致你的弹窗的滚动条也无法滚动,弹窗内容无法正常浏览。因此针对这样的问题,解决思路是这样的:
1、还是把touchmove默认给阻止掉。
2、给maskertouchmovejs手势滑动来实现滑动。
这样的方案我已经封装好了,直接npm来安装使用就行。

npm包的github地址:https://github.com/supermanHTL/popup-slide

希望对你有帮助!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值