vant tab页签中内容上下滚动后, 再切换tab页签时滚动位置总是同步一致。。。

发布于 2022-09-12 01:19:29 字数 158 浏览 18 评论 0

在移动端页面使用vant tab标签栏组件时发现,当在第一个页签内容(列表)中,上下滑动到某个位置时,切换第二个页签,发现其内容也是滑动到同样位置了,反之亦然,一开始以为是动态加载数据影响的,换成本地静态数据测试依然是这样,这是不是组件的bug,页签之间切换,各自内容应该是相对独立展现的,求教如何解决

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

诗笺 2022-09-19 01:19:29

试下 overflow-anchor: none

可爱咩 2022-09-19 01:19:29

有个粗暴的方法是:选中的tab下的内容 display:block,其余tab下的内容 display:none

估计出现这个问题的原因是页签内容元素没有设置 key 值,参考 vue 文档:

key 的特殊属性主要用在 Vue 的虚拟 DOM 算法,在新旧 nodes 对比时辨识 VNodes。如果不使用 key,Vue 会使用一种最大限度减少动态元素并且尽可能的尝试就地修改/复用相同类型元素的算法。而使用 key 时,它会基于 key 的变化重新排列元素顺序,并且会移除 key 不存在的元素。

在切换 tab 之后,vue 复用了之前的页签内容元素,所以会出现自动滚动到之前位置的问题。
有两种解决办法:

  • 可以试着在页签内容元素上加上唯一的 key,比如当前选中的 tab 的 id 或者 idx 之类的。这样切换 tab 之后,由于页签内容元素的 key 和之前不一样,vue 就会重新渲染这个元素。
  • 切换 tab 时候,手动滚动到顶部
源来凯始玺欢你 2022-09-19 01:19:29

请问一下,你这个问题解决了吗

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文