当前位置:首页 > VUE

vue实现tab页

2026-03-29 16:36:48VUE

Vue 实现 Tab 页的常见方法

基于动态组件与 v-if 切换

通过 v-ifv-show 控制不同 Tab 内容的显示与隐藏,结合点击事件切换当前活跃的 Tab。

<template>
  <div>
    <div class="tab-buttons">
      <button 
        v-for="(tab, index) in tabs" 
        :key="index"
        @click="activeTab = index"
        :class="{ 'active': activeTab === index }"
      >
        {{ tab.title }}
      </button>
    </div>
    <div class="tab-content">
      <div v-if="activeTab === 0">内容 1</div>
      <div v-if="activeTab === 1">内容 2</div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      tabs: [
        { title: 'Tab 1' },
        { title: 'Tab 2' }
      ],
      activeTab: 0
    };
  }
};
</script>

<style>
.tab-buttons button.active {
  background-color: #42b983;
  color: white;
}
</style>

使用 Vue Router 实现路由级 Tab

适合需要 URL 同步或复杂页面结构的场景,通过路由参数或路径匹配不同 Tab。

<template>
  <div>
    <router-link 
      v-for="(tab, index) in tabs"
      :key="index"
      :to="tab.path"
      active-class="active-tab"
    >
      {{ tab.title }}
    </router-link>
    <router-view></router-view>
  </div>
</template>

<script>
export default {
  data() {
    return {
      tabs: [
        { title: 'Home', path: '/home' },
        { title: 'Profile', path: '/profile' }
      ]
    };
  }
};
</script>

第三方组件库(如 Element UI)

利用现成的 UI 组件快速实现标准化 Tab,减少重复代码。

vue实现tab页

<template>
  <el-tabs v-model="activeTab">
    <el-tab-pane label="Tab 1" name="tab1">内容 1</el-tab-pane>
    <el-tab-pane label="Tab 2" name="tab2">内容 2</el-tab-pane>
  </el-tabs>
</template>

<script>
export default {
  data() {
    return {
      activeTab: 'tab1'
    };
  }
};
</script>

关键注意事项

  • 性能优化:内容较多时,v-showv-if 更适合(避免重复渲染)。
  • 动画效果:可通过 <transition> 组件添加切换动画。
  • 状态保持:使用 <keep-alive> 包裹动态组件以缓存 Tab 状态。

扩展功能建议

  • 通过 localStorage 保存上次激活的 Tab。
  • 支持动态添加/删除 Tab(需配合数组操作)。
  • 懒加载 Tab 内容(结合异步组件)。

标签: vuetab
分享给朋友:

相关文章

vue实现引导

vue实现引导

Vue 实现引导功能的方法 使用第三方库 推荐使用 driver.js 或 intro.js 这类专门为 Vue 设计的引导库。这些库提供了完整的 API 和样式,能够快速实现引导功能。 安装 dr…

vue实现画图

vue实现画图

Vue 实现画图功能 在 Vue 中实现画图功能通常需要结合 HTML5 的 <canvas> 元素或第三方库。以下是几种常见的方法: 使用原生 Canvas API 通过 Vue 直接…

vue 实现赋值

vue 实现赋值

Vue 实现赋值的方法 在 Vue 中,赋值操作通常涉及数据绑定和响应式更新。以下是几种常见的赋值方式: 直接赋值给 data 属性 在 Vue 实例的 data 对象中定义的属性可以直接通过 th…

js 实现vue

js 实现vue

实现 Vue 的核心功能 在 JavaScript 中实现 Vue 的核心功能需要模拟数据绑定、虚拟 DOM 和响应式系统。以下是一个简化版的实现思路: 响应式系统 通过 Object.define…

vue实现 弹窗

vue实现 弹窗

Vue 实现弹窗的基本方法 使用 Vue 实现弹窗可以通过多种方式,包括组件化、指令、插件等。以下是几种常见的实现方法。 组件化实现弹窗 创建一个独立的弹窗组件,通过 props 控制显示与隐藏。…

vue实现追加

vue实现追加

追加数据到数组或列表 在Vue中追加数据到数组或列表,可以通过push方法或concat方法实现。以下是几种常见的实现方式: 方法一:使用push方法 this.items.push(newIte…