当前位置:首页 > VUE

vue结合elementui实现tab

2026-01-22 19:22:13VUE

Vue 结合 ElementUI 实现 Tab 标签页

ElementUI 提供了 el-tabs 组件,可以方便地实现标签页功能。以下是一个完整的实现示例:

安装 ElementUI

确保项目已安装 ElementUI,若未安装可通过以下命令安装:

npm install element-ui -S

引入 ElementUI

main.js 中全局引入 ElementUI:

import Vue from 'vue';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';

Vue.use(ElementUI);

基本用法

在 Vue 组件中使用 el-tabsel-tab-pane 实现标签页:

vue结合elementui实现tab

<template>
  <el-tabs v-model="activeTab" @tab-click="handleTabClick">
    <el-tab-pane label="用户管理" name="user">用户管理内容</el-tab-pane>
    <el-tab-pane label="配置管理" name="config">配置管理内容</el-tab-pane>
    <el-tab-pane label="角色管理" name="role">角色管理内容</el-tab-pane>
    <el-tab-pane label="定时任务" name="task">定时任务内容</el-tab-pane>
  </el-tabs>
</template>

<script>
export default {
  data() {
    return {
      activeTab: 'user'
    };
  },
  methods: {
    handleTabClick(tab) {
      console.log('当前标签页:', tab.name);
    }
  }
};
</script>

动态生成 Tab

可以通过 v-for 动态生成标签页:

<template>
  <el-tabs v-model="activeTab">
    <el-tab-pane 
      v-for="tab in tabs" 
      :key="tab.name" 
      :label="tab.label" 
      :name="tab.name"
    >
      {{ tab.content }}
    </el-tab-pane>
  </el-tabs>
</template>

<script>
export default {
  data() {
    return {
      activeTab: 'user',
      tabs: [
        { label: '用户管理', name: 'user', content: '用户管理内容' },
        { label: '配置管理', name: 'config', content: '配置管理内容' },
        { label: '角色管理', name: 'role', content: '角色管理内容' }
      ]
    };
  }
};
</script>

可关闭的 Tab

实现可关闭的标签页需要手动管理标签页数据:

vue结合elementui实现tab

<template>
  <el-tabs v-model="activeTab" type="card" closable @tab-remove="handleTabRemove">
    <el-tab-pane 
      v-for="tab in tabs" 
      :key="tab.name" 
      :label="tab.label" 
      :name="tab.name"
    >
      {{ tab.content }}
    </el-tab-pane>
  </el-tabs>
</template>

<script>
export default {
  data() {
    return {
      activeTab: 'user',
      tabs: [
        { label: '用户管理', name: 'user', content: '用户管理内容' },
        { label: '配置管理', name: 'config', content: '配置管理内容' }
      ]
    };
  },
  methods: {
    handleTabRemove(targetName) {
      this.tabs = this.tabs.filter(tab => tab.name !== targetName);
      if (this.activeTab === targetName) {
        this.activeTab = this.tabs[0]?.name || '';
      }
    }
  }
};
</script>

添加新 Tab

实现添加新标签页功能:

<template>
  <div>
    <el-button @click="addTab">添加标签页</el-button>
    <el-tabs v-model="activeTab" type="card" closable @tab-remove="handleTabRemove">
      <el-tab-pane 
        v-for="tab in tabs" 
        :key="tab.name" 
        :label="tab.label" 
        :name="tab.name"
      >
        {{ tab.content }}
      </el-tab-pane>
    </el-tabs>
  </div>
</template>

<script>
export default {
  data() {
    return {
      activeTab: 'user',
      tabs: [
        { label: '用户管理', name: 'user', content: '用户管理内容' }
      ],
      tabIndex: 1
    };
  },
  methods: {
    addTab() {
      const newTabName = `newTab${this.tabIndex++}`;
      this.tabs.push({
        label: `新标签页 ${this.tabIndex}`,
        name: newTabName,
        content: `这是新标签页 ${this.tabIndex} 的内容`
      });
      this.activeTab = newTabName;
    },
    handleTabRemove(targetName) {
      this.tabs = this.tabs.filter(tab => tab.name !== targetName);
      if (this.activeTab === targetName) {
        this.activeTab = this.tabs[0]?.name || '';
      }
    }
  }
};
</script>

Tab 样式自定义

可以通过 CSS 自定义标签页样式:

/* 修改激活标签页的样式 */
.el-tabs__item.is-active {
  color: #ff0000;
  font-weight: bold;
}

/* 修改标签页下划线颜色 */
.el-tabs__active-bar {
  background-color: #ff0000;
}

注意事项

  1. v-model 绑定的是当前激活标签页的 name
  2. 动态添加/删除标签页时需要注意维护 activeTab 的值
  3. 可关闭标签页需要设置 closable 属性并处理 tab-remove 事件
  4. 动态内容可以通过插槽或组件方式实现更复杂的内容展示

标签: vueelementui
分享给朋友:

相关文章

vue实现xss

vue实现xss

XSS 攻击简介 XSS(跨站脚本攻击)是一种常见的安全漏洞,攻击者通过注入恶意脚本到网页中,当其他用户访问该页面时,脚本会在其浏览器中执行,可能导致数据泄露或会话劫持。 Vue 中的 XSS…

vue插件实现

vue插件实现

Vue 插件实现方法 Vue 插件是一种向 Vue 应用程序添加全局功能的机制。插件可以包含全局指令、过滤器、混入、实例方法等。 插件的基本结构 一个 Vue 插件通常是一个对象或函数,需要暴露一个…

vue实现active

vue实现active

Vue 实现 active 状态的方法 在 Vue 中实现 active 状态可以通过以下几种方式实现,具体取决于使用场景和需求。 使用 v-bind:class 动态绑定类名 通过 v-bind:…

vue实现波形

vue实现波形

实现波形效果的方法 在Vue中实现波形效果可以通过多种方式完成,常见的方法包括使用Canvas绘制、CSS动画或第三方库。以下是几种实现方案: 使用Canvas绘制波形 通过Canvas API动态…

vue实现筛选

vue实现筛选

实现筛选功能的基本思路 在Vue中实现筛选功能通常需要结合数据绑定、计算属性和方法。筛选的核心逻辑是根据用户输入的条件过滤原始数据列表,并动态更新显示结果。 数据准备 定义一个数组存储原始数据,另一…

vue实现mvvm

vue实现mvvm

Vue 实现 MVVM 模式 MVVM(Model-View-ViewModel)是一种前端架构模式,Vue 是其典型实现之一。MVVM 的核心是通过数据绑定和响应式系统实现视图与数据的自动同步。…