当前位置:首页 > VUE

vue实现切换tab

2026-03-09 06:13:25VUE

Vue 实现 Tab 切换的方法

使用 v-ifv-show 控制显示

通过 v-ifv-show 指令动态切换 Tab 内容的显示。v-if 会销毁和重建 DOM,适合内容变化较大的场景;v-show 仅切换 CSS 的 display 属性,适合频繁切换的场景。

vue实现切换tab

<template>
  <div>
    <div class="tabs">
      <button @click="activeTab = 'tab1'">Tab 1</button>
      <button @click="activeTab = 'tab2'">Tab 2</button>
    </div>
    <div class="content">
      <div v-if="activeTab === 'tab1'">Content for Tab 1</div>
      <div v-if="activeTab === 'tab2'">Content for Tab 2</div>
    </div>
  </div>
</template>

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

使用动态组件 <component>

通过 Vue 的动态组件 <component> 结合 :is 属性实现 Tab 切换,适合封装多个独立组件的情况。

vue实现切换tab

<template>
  <div>
    <div class="tabs">
      <button @click="currentComponent = 'ComponentA'">Component A</button>
      <button @click="currentComponent = 'ComponentB'">Component B</button>
    </div>
    <component :is="currentComponent"></component>
  </div>
</template>

<script>
import ComponentA from './ComponentA.vue';
import ComponentB from './ComponentB.vue';

export default {
  components: { ComponentA, ComponentB },
  data() {
    return {
      currentComponent: 'ComponentA'
    };
  }
};
</script>

使用 Vue Router 实现路由级 Tab

通过 Vue Router 的嵌套路由或命名视图实现 Tab 切换,适合需要 URL 同步或复杂布局的场景。

// router.js
const routes = [
  {
    path: '/tabs',
    component: TabsContainer,
    children: [
      { path: 'tab1', component: Tab1 },
      { path: 'tab2', component: Tab2 }
    ]
  }
];
<!-- TabsContainer.vue -->
<template>
  <div>
    <router-link to="/tabs/tab1">Tab 1</router-link>
    <router-link to="/tabs/tab2">Tab 2</router-link>
    <router-view></router-view>
  </div>
</template>

使用第三方库(如 Element UI)

UI 库如 Element UI 提供封装好的 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="{ active: activeTab === 'tab1' }")实现选中状态样式。
  • 动画过渡:使用 Vue 的 <transition> 组件为 Tab 切换添加动画效果。
  • 懒加载:结合 v-if 或动态组件的 keep-alive 实现内容缓存,避免重复渲染。

标签: vuetab
分享给朋友:

相关文章

vue实现按钮组轮换

vue实现按钮组轮换

实现按钮组轮换的方法 在Vue中实现按钮组轮换效果可以通过动态绑定类和事件处理来完成。以下是一种常见的实现方式: 模板部分 <template> <div class="bu…

vue实现引导

vue实现引导

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

tabbar 实现 vue

tabbar 实现 vue

在 Vue 中实现 TabBar 功能可以通过多种方式完成,以下是几种常见的方法: 使用 Vue Router 结合自定义组件 创建一个自定义的 TabBar 组件,结合 Vue Route…

vue实现portal

vue实现portal

Vue 实现 Portal 功能 Portal 是一种将子节点渲染到父组件 DOM 层级之外的 DOM 节点的技术,常用于实现模态框、弹出层等需要脱离当前组件层级的场景。Vue 可以通过多种方式实现…

vue实现尺子

vue实现尺子

Vue 实现尺子组件 实现一个尺子组件可以通过 Canvas 或纯 CSS 完成。以下是两种常见实现方式: 使用 Canvas 绘制尺子 通过 Canvas 动态绘制刻度线和数字,适合需要高精度或动…

vue远离实现

vue远离实现

Vue 原理实现 Vue.js 的核心原理包括响应式系统、虚拟 DOM、模板编译和组件化机制。以下是其关键实现原理的详细解析。 响应式系统 Vue 的响应式系统基于 Object.definePro…