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

纯Vue实现tab标签

2026-02-21 17:21:46VUE

Vue 实现 Tab 标签的方法

使用动态组件和 v-for

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

纯Vue实现tab标签

<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 条件。

纯Vue实现tab标签

<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
分享给朋友:

相关文章

vue实现多标签选择器

vue实现多标签选择器

实现多标签选择器的核心思路 Vue中实现多标签选择器需要结合数据绑定、事件处理和样式控制。常见的实现方式包括基于原生HTML元素的扩展或使用第三方组件库。 基于原生HTML的实现方法 创建Vue组件…

vue实现云标签

vue实现云标签

Vue 实现云标签(标签云)的方法 使用第三方库(如 vue-tag-cloud) 安装 vue-tag-cloud 库: npm install vue-tag-cloud 在组件中引入并使用:…

Vue 实现左右滑动

Vue 实现左右滑动

Vue 实现左右滑动的方法 使用 touch 事件监听 通过监听 touchstart、touchmove 和 touchend 事件实现基础滑动逻辑。在 Vue 组件中声明这些事件处理函数,计算滑动…

Vue如何实现扫雷

Vue如何实现扫雷

Vue 实现扫雷游戏的核心思路 扫雷游戏的核心逻辑包括生成雷区、处理点击事件、计算周围雷数以及递归展开空白区域。Vue 的响应式特性非常适合管理游戏状态和更新视图。 数据结构设计 使用二维数组表示雷…

Vue实现打印贴纸

Vue实现打印贴纸

Vue实现打印贴纸的方法 在Vue中实现打印贴纸功能,通常需要结合HTML模板、CSS样式和JavaScript打印API。以下是几种常见的方法: 使用window.print()方法 创建一个专…

Vue使用transform实现轮播

Vue使用transform实现轮播

使用 transform 实现 Vue 轮播 在 Vue 中,可以通过 transform 和 CSS 过渡效果实现平滑的轮播效果。以下是具体实现方法: 核心思路 利用 transform: tra…