乐趣区

关于前端:web页面小程序列表滑动事件穿透解决方案可能是全网最简洁的解决方案

原因

昨天测试给我的小程序提了一个 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 的款式,当下层暗藏的时候勾销这个款式

亲测完满解决★,°:.☆(~▽~)/$:.°★。测试小姐姐都说好(﹁ ﹁) ~→

退出移动版