微信小程序弹窗滚动导致页面穿透问题的解决办法

本文详细介绍了在小程序开发中遇到的弹窗穿透问题及其解决过程。通过调整弹窗组件的结构,将滚动区域由view改为scroll-view,并设置catchtouchmove属性,成功避免了手指滑动时底层页面的同步滚动及页面刷新触发,该方案适用于iOS和安卓平台。
摘要由CSDN通过智能技术生成

最近在做小程序,由于小程序提供的弹窗样式有限,我们通常会自定义弹窗组件(我都是在弹窗蒙层上加了catchtouchmove="true",保证最基本的穿透问题但是解决不了弹窗内容区域需要滚动的情况),那么就会导致页面穿透问题,具体表现有手指上下滑动弹窗部分,底部页面也同时滑动、如果配置了onPullDownRefresh页面刷新则页面刷新也会触发,我的解决过程如下:

1.最简单的想法:

最开始我想到的是弹窗后动态设置最外层的overflow:hidden,这个办法会引起页面滚回到顶部,不会记住滚动位置,如果弹窗内容也是带滚动的也同样会触发页面刷新的问题。

2.一个很笨效果又不好的办法:

由于小程序提供的页面刷新不能动态设置,所以我单独写了一个动态刷新的办法,页面主体内容区域用scroll-view包裹,暂且能达到,不触发原生的onPullDownRefresh事件,但是我发现在ios和安卓机上显示的情况不一致呀,安卓机尚且可以,ios上页面依然可以狂妄的滚动,于是试了一下在外层加overflow:hidden,并没有什么用,第二个办法放弃。

3.自认为完美的解决办法:

1)自定义的弹窗上的滚动区域有原来的view块变成scroll-view块;

2)整个弹窗都设置了catchtouchmove="true"(发现scroll-view部分还能用,nice);

3)页面主体把原先的自定义刷新事件、scroll-view包裹都去掉了,就是清清爽爽的view和原生小程序刷新;

这时滚动弹窗scroll-view部分还能正常滚动,且底部页面也都不受影响,惊奇的发现以上问题都解决了,而且比第二部减少了很多代码,测试安卓和ios都可以。

开始喜欢并尊敬scroll-view这个组件啦~

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值