当前位置:首页 > VUE

vue实现切换tab

2026-01-17 01:11:23VUE

实现 Vue 中 Tab 切换功能

使用 v-if 和 v-show 控制显示

在 Vue 中可以通过 v-ifv-show 指令来控制不同 Tab 内容的显示和隐藏。v-if 会销毁和重建 DOM 元素,而 v-show 只是切换 CSS 的 display 属性。

vue实现切换tab

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

    <div class="content">
      <div v-if="currentTab === 0">
        内容1
      </div>
      <div v-if="currentTab === 1">
        内容2
      </div>
    </div>
  </div>
</template>

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

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

使用动态组件

Vue 的 <component> 元素配合 is 属性可以实现动态组件切换,这种方式适合不同 Tab 对应不同组件的情况。

vue实现切换tab

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

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

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

export default {
  components: { Tab1, Tab2 },
  data() {
    return {
      currentTab: 'Tab1',
      tabs: [
        { title: 'Tab 1', component: 'Tab1' },
        { title: 'Tab 2', component: 'Tab2' }
      ]
    }
  }
}
</script>

使用 Vue Router 实现路由级 Tab

对于更复杂的应用,可以使用 Vue Router 来实现路由级别的 Tab 切换。

// router.js
import Vue from 'vue'
import Router from 'vue-router'
import Tab1 from './views/Tab1.vue'
import Tab2 from './views/Tab2.vue'

Vue.use(Router)

export default new Router({
  routes: [
    { path: '/tab1', component: Tab1 },
    { path: '/tab2', component: Tab2 }
  ]
})
<!-- App.vue -->
<template>
  <div>
    <router-link to="/tab1">Tab 1</router-link>
    <router-link to="/tab2">Tab 2</router-link>

    <router-view></router-view>
  </div>
</template>

使用第三方库

如果需要更丰富的 Tab 功能,可以考虑使用第三方库如 vue-tabselement-ui 的 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-if/v-show,组件复用适合动态组件,大型应用推荐使用路由,快速开发可考虑第三方库。

标签: vuetab
分享给朋友:

相关文章

vue实现级联

vue实现级联

Vue 实现级联选择器的方法 级联选择器(Cascader)是常见的表单组件,用于处理多层级联动数据选择(如省市区选择)。以下是几种实现方式: 基于 Element UI 的 el-cascader…

vue实现grid

vue实现grid

Vue 实现 Grid 布局的方法 使用 CSS Grid 布局 Vue 可以结合 CSS Grid 布局实现灵活的网格系统。CSS Grid 是现代浏览器原生支持的布局方案,无需额外依赖库。 &l…

vue环境实现

vue环境实现

Vue 环境搭建 安装 Node.js 和 npm Node.js 是运行 Vue 的基础环境,npm 是包管理工具。从 Node.js 官网 下载并安装最新稳定版本。安装完成后,在终端运行以下命令验…

vue底部实现

vue底部实现

Vue 底部实现方法 在 Vue 项目中实现底部布局可以通过多种方式完成,以下是一些常见的方法: 使用固定定位 将底部元素固定在页面底部,适用于单页应用或需要始终显示的底部栏。 <temp…

vue 实现ztree

vue 实现ztree

在Vue中实现类似ZTree的功能,可以通过集成第三方库或自定义组件完成。以下是两种常见方法: 使用vue-tree组件 vue-tree是一个轻量级的Vue树形组件,支持复选框、懒加载等功能,适合…

vue实现抽屉

vue实现抽屉

Vue 实现抽屉组件 抽屉组件是一种常见的 UI 模式,通常用于从屏幕边缘滑出内容。以下是几种实现抽屉的方法: 使用 Vue 原生实现 创建一个基本的抽屉组件,利用 Vue 的过渡和条件渲染功能。…