scroll-view内部滑动影响外面怎么办?怎么解决?

文章导读
在微信小程序中,如果你在 scroll-view 内部使用了多个独立的 scroll-view 组件,并且希望它们的内部滑动行为不影响外部页面的上拉下拉操作(如页面滚动),那么你需要特别注意 事件冒泡机制 和 滚动优先级 的设置。你有两个或多个 内部的 scroll-view,当它们被滑动时,可能会影响外部页面的上拉/下拉操作。这通常是由于事件冒泡导致的。在内部的 scroll-view 上添加
📋 目录
  1. A 解决方案一
  2. B 解决方案二
  3. C 解决方案三
  4. D 解决方案四
  5. E 解决方案五
  6. F 解决方案六
A A

在微信小程序中,如果你在 scroll-view 内部使用了多个独立的 scroll-view 组件,并且希望它们的内部滑动行为不影响外部页面的上拉下拉操作(如页面滚动),那么你需要特别注意 事件冒泡机制 和 滚动优先级 的设置。你有两个或多个 内部的 scroll-view,当它们被滑动时,可能会影响外部页面的上拉/下拉操作。这通常是由于事件冒泡导致的。在内部的 scroll-view 上添加 catchtouchmove="true",可以阻止触摸事件冒泡到外层。

解决方案一

在内部 scroll-view 上设置 catchtouchmove='true',这样内部滑动就不会冒泡到父容器了。同时,如果外部是 page 页面,记得在 page 的 json 文件中设置 "disableScroll": true 来禁用页面滚动。

解决方案二

使用 scroll-view 的 bindscrolltoupper 和 bindscrolldown 等事件,但最简单的是在内部 scroll-view 加 catchtouchmove="true" 和 catchtouchstart="true"。

scroll-view内部滑动影响外面怎么办?怎么解决?

解决方案三

如果外部是另一个 scroll-view,内部的要设置 style="pointer-events: none;" 不行,最好的方式是内部 scroll-view 设置 catchtouchmove="true",外部 scroll-view 设置 scroll-y。

解决方案四

问题描述:嵌套的 scroll-view 滑动会影响外层。解决:在内层 scroll-view 添加属性 catchtouchmove="true",就可以阻止事件冒泡了。

解决方案五

在微信小程序开发者工具中,两个内部 scroll-view 滑动影响页面上拉下拉,添加 catchtouchmove="true" 到每个内部 scroll-view 上即可解决。

scroll-view内部滑动影响外面怎么办?怎么解决?

解决方案六

重点:在内部 scroll-view 的标签上写 catchtouchmove="true",这样触摸事件就不会传递到外面了。示例代码:内容

FAQ
Q: 为什么内部 scroll-view 会影响外部页面滚动?
A: 因为触摸事件默认会冒泡到父元素,导致外部容器也响应滑动。
Q: catchtouchmove="true" 有什么副作用吗?
A: 不会,仅仅阻止事件冒泡,内部滚动正常工作。
Q: 如果外部是整个 page,怎么办?
A: 在 page 的 json 中加 "disableScroll": true。
Q: 横向和纵向 scroll-view 都要加吗?
A: 是的,无论方向,都加 catchtouchmove="true"。