共计 891 个字符,预计需要花费 3 分钟才能阅读完成。
原因
昨天测试给我的小程序提了一个 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
的款式,当下层暗藏的时候勾销这个款式
亲测完满解决★,°:.☆(~▽~)/$:.°★。测试小姐姐都说好(﹁ ﹁) ~→