陈小窝 2023-08-21 15:41 采纳率: 0%
浏览 6

vant tab标签页组件页面初始化隐藏问题

vant tab标签页组件页面初始化隐藏问题

功能描述:
当鼠标滑动至详情页的显示标题处,tab标签页组件显示并悬乎置顶,点击tab滚动至相对应的content,但是就会出现一个问题,点击tab跳转到content位置停留点不正确
复现链接:https://codesandbox.io/s/hopeful-dream-m7cscl?file=/src/App.vue
Vant 版本:leatest-v2
设备/浏览器:chrome

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-08-21 19:27
    关注

    【以下回答由 GPT 生成】

    解决方案:

    根据问题描述和提供的代码链接,可以使用以下步骤来解决问题:

    1. 首先,需要在安装Vant组件库后,引入所需的组件。在App.vue文件中,左侧引入vant的样式和Tab组件,代码如下:
    <template>
      <div id="app">
        <van-tab v-model="active">
          <van-tab-bar>
            <van-tab-bar-item icon="home-o">Tab 1</van-tab-bar-item>
            <van-tab-bar-item icon="search">Tab 2</van-tab-bar-item>
            <van-tab-bar-item icon="friends-o">Tab 3</van-tab-bar-item>
          </van-tab-bar>
          <van-tab-content>
            <van-tab-pane>Content 1</van-tab-pane>
            <van-tab-pane>Content 2</van-tab-pane>
            <van-tab-pane>Content 3</van-tab-pane>
          </van-tab-content>
        </van-tab>
      </div>
    </template>
    
    <script>
    import { Tab, TabPane, Tabbar, TabbarItem } from 'vant';
    export default {
      name: 'App',
      components: {
        Tab,
        TabPane,
        Tabbar,
        TabbarItem
      },
      data() {
        return {
          active: 0
        };
      }
    };
    </script>
    
    <style>
    @import 'vant/lib/index.css';
    </style>
    
    1. 然后,需要修改点击标签页跳转到内容位置时停留的位置不正确的问题。在App.vue文件中,找到Tab组件,并给它绑定一个change事件,在事件处理方法中,获取到跳转到的标签索引,然后使用Vue的$nextTick()方法将滚动的逻辑放在下一次DOM更新循环中,以确保DOM已经更新完毕后再执行滚动操作。具体代码如下:
    <template>
      <div id="app">
        <van-tab v-model="active" @change="handleTabChange">
          <van-tab-bar>
            <van-tab-bar-item icon="home-o">Tab 1</van-tab-bar-item>
            <van-tab-bar-item icon="search">Tab 2</van-tab-bar-item>
            <van-tab-bar-item icon="friends-o">Tab 3</van-tab-bar-item>
          </van-tab-bar>
          <van-tab-content>
            <van-tab-pane>Content 1</van-tab-pane>
            <van-tab-pane>Content 2</van-tab-pane>
            <van-tab-pane>Content 3</van-tab-pane>
          </van-tab-content>
        </van-tab>
      </div>
    </template>
    
    <script>
    import { Tab, TabPane, Tabbar, TabbarItem } from 'vant';
    export default {
      name: 'App',
      components: {
        Tab,
        TabPane,
        Tabbar,
        TabbarItem
      },
      data() {
        return {
          active: 0
        };
      },
      methods: {
        handleTabChange(index) {
          // 使用$nextTick()确保DOM已经更新完毕后再执行滚动操作
          this.$nextTick(() => {
            const el = document.querySelectorAll('.van-tab-pane')[index];
            el.scrollIntoView({
              behavior: 'smooth',
              block: 'start'
            });
          });
        }
      }
    };
    </script>
    
    <style>
    @import 'vant/lib/index.css';
    </style>
    
    1. 最后,点击运行按钮预览网页,现在滚动到页面顶部,tab标签页组件应该正常显示,并且点击标签页时,页面应该正确滚动到相应内容的位置。

    希望以上解决方案能够解决你的问题,如果还有其他疑问,请随时提问。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 8月21日

悬赏问题

  • ¥15 springboot aop 应用启动异常
  • ¥15 matlab有关债券凸性久期的代码
  • ¥15 lvgl v8.2定时器提前到来
  • ¥15 qtcp 发送数据时偶尔会遇到发送数据失败?用的MSVC编译器(标签-qt|关键词-tcp)
  • ¥15 cam_lidar_calibration报错
  • ¥15 拓扑学,凸集,紧集。。
  • ¥15 如何扩大AIS数据容量
  • ¥15 单纯型python实现编译报错
  • ¥15 c++2013读写oracle
  • ¥15 c++ gmssl sm2验签demo