切换内容。 定义 t…">
当前位置:首页 > VUE

纯Vue实现tab标签

2026-02-21 17:21:46VUE

Vue 实现 Tab 标签的方法

使用动态组件和 v-for

通过 v-for 渲染标签页标题,结合动态组件 <component :is="currentTab"> 切换内容。
定义 tabs 数组和 currentTab 状态,点击标签时更新 currentTab

<template>
  <div>
    <div class="tab-buttons">
      <button 
        v-for="tab in tabs" 
        :key="tab.name"
        @click="currentTab = tab.component"
        :class="{ active: currentTab === tab.component }"
      >
        {{ tab.name }}
      </button>
    </div>
    <component :is="currentTab" class="tab-content" />
  </div>
</template>

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

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

<style>
.tab-buttons button {
  padding: 8px 16px;
  margin-right: 4px;
  background: #eee;
  border: none;
}
.tab-buttons button.active {
  background: #ddd;
  font-weight: bold;
}
.tab-content {
  padding: 16px;
  border: 1px solid #ddd;
}
</style>

使用 v-show 控制显示

通过 v-show 切换标签内容,适合简单场景。
定义 activeTab 状态,点击标签时切换对应的 v-show 条件。

<template>
  <div>
    <div class="tab-buttons">
      <button 
        v-for="tab in tabs" 
        :key="tab"
        @click="activeTab = tab"
        :class="{ active: activeTab === tab }"
      >
        {{ tab }}
      </button>
    </div>
    <div v-show="activeTab === 'Tab1'">内容1</div>
    <div v-show="activeTab === 'Tab2'">内容2</div>
  </div>
</template>

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

使用路由切换

结合 Vue Router 实现标签页,适合多页面应用。
通过 <router-link> 导航,<router-view> 显示内容。

<template>
  <div>
    <router-link 
      v-for="tab in tabs" 
      :key="tab.path"
      :to="tab.path"
      active-class="active"
    >
      {{ tab.name }}
    </router-link>
    <router-view />
  </div>
</template>

<script>
export default {
  data() {
    return {
      tabs: [
        { name: '标签1', path: '/tab1' },
        { name: '标签2', path: '/tab2' }
      ]
    };
  }
};
</script>

注意事项

  • 性能优化:动态组件适合复杂内容切换,v-show 适合简单 DOM 切换。
  • 路由参数:若需保存标签页状态,可使用 keep-alive 包裹动态组件或路由视图。
  • 样式隔离:为每个标签内容添加独立样式类,避免冲突。

纯Vue实现tab标签

标签: 标签Vue
分享给朋友:

相关文章

Vue函数实现

Vue函数实现

在Vue中实现函数可以通过多种方式,具体取决于使用场景(选项式API、组合式API或生命周期钩子)。以下是常见方法: 方法1:选项式API中的methods 在Vue 2或选项式API中,函数通常定…

Vue数据依赖实现

Vue数据依赖实现

Vue数据依赖实现原理 Vue的数据依赖实现基于响应式系统,核心是通过Object.defineProperty或Proxy拦截数据变化,结合发布-订阅模式实现依赖收集和更新触发。 核心机制 依赖…

Vue实现手机推送

Vue实现手机推送

Vue 中实现手机推送的方法 在 Vue 项目中实现手机推送功能,通常需要结合第三方推送服务(如 Firebase Cloud Messaging、极光推送等)或原生移动端能力(通过 Cordova/…

Vue实现数据检验

Vue实现数据检验

Vue 数据校验的实现方法 在Vue中实现数据校验可以通过多种方式完成,以下是常见的几种方法: 使用Vue的内置指令 Vue提供了一些内置指令如v-model和v-bind可以结合HTML5的表单…

Vue 实现登出功能

Vue 实现登出功能

实现登出功能的方法 在Vue中实现登出功能通常涉及清除用户认证信息、重置应用状态并跳转到登录页面。以下是几种常见的实现方式: 清除本地存储的token localStorage.removeIte…

Vue submit实现导出

Vue submit实现导出

Vue 中实现导出功能的方法 在 Vue 项目中实现导出功能,通常可以通过前端生成文件或调用后端接口导出数据。以下是几种常见的实现方式: 前端生成 Excel 文件 使用 xlsx 库可以方便地在…