当前位置:首页 > 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 交互实现方法 Vue.js 提供了多种方式实现用户交互,包括事件处理、表单绑定、动态渲染等。以下是常见的交互实现方法: 事件处理 通过 v-on 或 @ 指令绑定事件,触发方法或直接执行表达…

vue实现groupbox

vue实现groupbox

Vue 实现 GroupBox 组件 在 Vue 中实现类似 GroupBox 的效果可以通过自定义组件完成。GroupBox 通常是一个带有标题的边框容器,用于将相关控件分组显示。 基本实现方法…

vue实现加减

vue实现加减

Vue 实现加减功能 在 Vue 中实现加减功能可以通过数据绑定和事件监听来完成。以下是一个简单的实现方法: 模板部分 <template> <div> <…

vue实现左右布局

vue实现左右布局

实现左右布局的方法 在Vue中实现左右布局可以通过多种方式完成,以下是几种常见的方法: 使用Flexbox布局 Flexbox是一种现代的CSS布局方式,可以轻松实现左右布局。 <t…

vue实现列表循环

vue实现列表循环

Vue 列表循环的实现方法 在 Vue 中,可以通过 v-for 指令实现列表循环渲染。以下是几种常见的实现方式: 基础列表渲染 <template> <ul>…

vue缺省页实现

vue缺省页实现

Vue 缺省页实现方法 使用条件渲染控制显示 通过v-if或v-show指令控制缺省页的显示。当数据为空时展示缺省组件,否则显示正常内容。 <template> <div>…