web页面(小程序)列表滑动事件穿透解决方案

10 篇文章 0 订阅
4 篇文章 0 订阅

缘由

昨天测试给我的小程序提了一个bug,说:‘我怎么滑动弹出后的这个列表后面的列表也会跟着滑动啊,这很奇快诶’,我:‘我修复一下’。

造成问题的场景

是一个数据列表页,通过触底上滑加载数据

所以我把页面最外层view加了一个min-height: '100vh'让这个列表可以自动增加高度进行扩容

这个列表页有很多筛选条件或者说是筛选项,我做了一个有背景遮罩层的弹出组件,把这些筛选项塞进去,最外层的view给了一个max-height: 85vh; overflow: scroll;让它也可以在数据很多的时候滑动去选择某一个筛选项

注意问题就来了:如果弹出的筛选组件和数据列表的数据都多到超出了上述的85vh 100vh这时候如果滑动弹出的筛选列表touchmove事件就会在两个列表上同时触发,表现为当上层列表触底或者触顶时,如果底层列表为触底或者未触顶,就会触发底层的touchmove事件,就会滑动背景,也就是老生常谈的滑动穿透,既然找出问题发生的原因了,现在我们就开始解决吧🔨

百度大法好不好?
小程序端

有人说给底层列表增加一个catchtouchmove='true',但这种情况下直接页面都不能滑动了,我又看到很多说给底层的列表放到scroll-view里面然后设置scroll-y='true',通过scoll-view的事件去加载数据,但是scroll-view性能在列表数据特别多的时候会有折扣,这个先不谈,据本人尝试,这种方式并不奏效,可能我的姿势不对,有哪位仁兄有解决过的可以来探讨一下,欢迎留言~~

web端

推荐直接使用tua-body-scroll-lock,可以比较完美的解决这个问题。

祭出我的大杀器

其实我们改变一下思路问题就迎刃而解了
首先明确我们的需求:最上层的列表滑动的时候下面的列表不能滑动
简单啊:
我们是可以在底层的页面上监听到上层的列表有没有显示的:当上层列表展示的时候,给到底层的view一个overflow: hidden;hight: 100vh的样式,当上层隐藏的时候取消这个样式

亲测完美解决★,°:.☆( ̄▽ ̄)/$:.°★

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值