vue实现tab
Vue 实现 Tab 切换的几种方法
使用 v-if 和 v-show 指令
通过 v-if 或 v-show 控制不同 Tab 内容的显示与隐藏。v-if 会销毁和重建 DOM,适合切换频率低的场景;v-show 通过 CSS 控制显示,适合频繁切换。
<template>
<div>
<div class="tabs">
<button @click="currentTab = 'tab1'">Tab 1</button>
<button @click="currentTab = 'tab2'">Tab 2</button>
</div>
<div class="content">
<div v-if="currentTab === 'tab1'">Content 1</div>
<div v-if="currentTab === 'tab2'">Content 2</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
currentTab: 'tab1'
}
}
}
</script>
使用动态组件
通过 Vue 的 <component> 动态组件实现 Tab 切换,结合 :is 属性动态加载不同组件。
<template>
<div>
<div class="tabs">
<button @click="currentTab = 'Tab1'">Tab 1</button>
<button @click="currentTab = 'Tab2'">Tab 2</button>
</div>
<component :is="currentTab" />
</div>
</template>
<script>
import Tab1 from './Tab1.vue'
import Tab2 from './Tab2.vue'
export default {
components: { Tab1, Tab2 },
data() {
return {
currentTab: 'Tab1'
}
}
}
</script>
使用路由实现 Tab
通过 Vue Router 实现 Tab 切换,适合需要 URL 同步的场景。
// router.js
const routes = [
{ path: '/tab1', component: Tab1 },
{ path: '/tab2', component: Tab2 }
]
<template>
<div>
<router-link to="/tab1">Tab 1</router-link>
<router-link to="/tab2">Tab 2</router-link>
<router-view></router-view>
</div>
</template>
使用第三方库
如 vue-tabs-component 或 element-ui 的 Tab 组件,快速实现功能丰富的 Tab。
<template>
<el-tabs v-model="activeTab">
<el-tab-pane label="Tab 1" name="tab1">Content 1</el-tab-pane>
<el-tab-pane label="Tab 2" name="tab2">Content 2</el-tab-pane>
</el-tabs>
</template>
<script>
export default {
data() {
return {
activeTab: 'tab1'
}
}
}
</script>
样式与交互优化
为 Tab 按钮添加高亮样式,通过 :class 绑定当前激活状态。
<button
@click="currentTab = 'tab1'"
:class="{ active: currentTab === 'tab1' }"
>Tab 1</button>
.active {
background-color: #42b983;
color: white;
}
注意事项
- 动态组件需提前注册或在
components中引入。 - 路由方式需配置 Vue Router 并处理导航逻辑。
- 第三方库需按文档正确安装和配置。







