当前位置:首页 > VUE

vue 实现tab

2026-03-27 15:06:57VUE

Vue 实现 Tab 切换功能

在 Vue 中实现 Tab 切换功能可以通过动态组件或条件渲染实现,以下是几种常见方法:

使用 v-show 或 v-if 条件渲染

通过绑定 v-showv-if 控制不同 Tab 内容的显示与隐藏:

<template>
  <div>
    <div class="tabs">
      <button 
        v-for="(tab, index) in tabs" 
        :key="index"
        @click="currentTab = tab"
        :class="{ active: currentTab === tab }"
      >
        {{ tab }}
      </button>
    </div>

    <div class="tab-content">
      <div v-show="currentTab === 'Tab1'">
        Tab1 内容
      </div>
      <div v-show="currentTab === 'Tab2'">
        Tab2 内容
      </div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      tabs: ['Tab1', 'Tab2'],
      currentTab: 'Tab1'
    }
  }
}
</script>

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

使用动态组件

通过 <component :is="currentComponent"> 动态切换组件:

<template>
  <div>
    <button @click="currentComponent = 'Tab1'">Tab1</button>
    <button @click="currentComponent = 'Tab2'">Tab2</button>

    <component :is="currentComponent" />
  </div>
</template>

<script>
import Tab1 from './Tab1.vue'
import Tab2 from './Tab2.vue'

export default {
  components: { Tab1, Tab2 },
  data() {
    return {
      currentComponent: 'Tab1'
    }
  }
}
</script>

使用 Vue Router 实现路由级 Tab

对于更复杂的应用,可以使用 Vue Router 实现路由级 Tab:

const routes = [
  { path: '/tab1', component: Tab1 },
  { path: '/tab2', component: Tab2 }
]

const router = new VueRouter({
  routes
})

new Vue({
  router
}).$mount('#app')
<router-link to="/tab1">Tab1</router-link>
<router-link to="/tab2">Tab2</router-link>

<router-view></router-view>

使用第三方 UI 库

许多 Vue UI 组件库提供了现成的 Tab 组件,如:

  • Element UI 的 <el-tabs>
  • Vuetify 的 <v-tabs>
  • Ant Design Vue 的 <a-tabs>

以 Element UI 为例:

vue  实现tab

<el-tabs v-model="activeTab">
  <el-tab-pane label="Tab1" name="tab1">Tab1 内容</el-tab-pane>
  <el-tab-pane label="Tab2" name="tab2">Tab2 内容</el-tab-pane>
</el-tabs>

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

每种方法适用于不同场景,简单交互可使用条件渲染,组件复用考虑动态组件,复杂应用推荐使用路由或 UI 库方案。

标签: vuetab
分享给朋友:

相关文章

课程表vue实现

课程表vue实现

实现课程表的Vue组件 创建课程表需要设计数据结构、布局和交互逻辑。以下是一个基于Vue 3的实现方案: 数据结构设计 const timetableData = ref([ { ti…

vue实现tag

vue实现tag

Vue 实现标签(Tag)功能 在 Vue 中实现标签(Tag)功能可以通过多种方式完成,以下是一些常见的方法和实现步骤: 使用动态组件和 v-for 通过 v-for 指令动态渲染标签列表,结合样…

vue实现剪辑

vue实现剪辑

Vue 实现视频剪辑功能 在Vue中实现视频剪辑功能通常需要结合HTML5的<video>元素和第三方库(如FFmpeg.js或Video.js)。以下是几种常见的实现方法: 使用FFm…

vue实现树

vue实现树

Vue 实现树形结构的方法 使用递归组件实现树形结构 递归组件是Vue中实现树形结构的常见方式。通过组件调用自身,可以轻松构建多层嵌套的树形数据。 <template> <ul…

vue 实现登录

vue 实现登录

Vue 实现登录功能 创建登录表单组件 在 Vue 项目中创建一个登录表单组件(如 Login.vue),包含用户名和密码输入框以及提交按钮。使用 v-model 实现双向数据绑定。 <tem…

vue实现word文档实现预览

vue实现word文档实现预览

在Vue中实现Word文档预览可以通过多种方式实现,以下是几种常见的方法: 使用mammoth.js库 mammoth.js是一个将Word文档(.docx)转换为HTML的JavaScript库,…