当前位置:首页 > 前端教程

elementui tabs

2026-01-14 20:54:28前端教程

ElementUI Tabs 基础用法

ElementUI 的 Tabs 组件提供了一种便捷的方式来组织内容,通过标签页的形式展示不同板块的信息。使用 el-tabsel-tab-pane 组件可以快速构建标签页布局。

<el-tabs v-model="activeName">
  <el-tab-pane label="用户管理" name="first">用户管理内容</el-tab-pane>
  <el-tab-pane label="配置管理" name="second">配置管理内容</el-tab-pane>
  <el-tab-pane label="角色管理" name="third">角色管理内容</el-tab-pane>
</el-tabs>

<script>
export default {
  data() {
    return {
      activeName: 'first'
    }
  }
}
</script>

标签页属性配置

el-tabs 组件支持多种属性配置,以满足不同场景需求。type 属性可以设置标签页样式,支持 cardborder-card 两种风格。

closable 属性控制是否显示关闭按钮,editable 属性允许动态添加和删除标签页。stretch 属性可以让标签项自动撑开容器宽度。

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

动态操作标签页

通过编程方式可以动态控制标签页的增删改查。结合 Vue 的响应式特性,修改数据数组即可实现标签页的动态更新。

elementui tabs

methods: {
  addTab() {
    const newTabName = `newTab${this.tabIndex++}`
    this.tabs.push({
      label: `New Tab ${this.tabIndex}`,
      name: newTabName,
      content: `New Tab content`
    })
    this.activeName = newTabName
  },
  removeTab(targetName) {
    const tabs = this.tabs
    let activeName = this.activeName
    if (activeName === targetName) {
      tabs.forEach((tab, index) => {
        if (tab.name === targetName) {
          const nextTab = tabs[index + 1] || tabs[index - 1]
          if (nextTab) {
            activeName = nextTab.name
          }
        }
      })
    }
    this.activeName = activeName
    this.tabs = tabs.filter(tab => tab.name !== targetName)
  }
}

标签页事件处理

Tabs 组件提供了多个事件钩子,可以监听标签页的各种交互行为。tab-click 事件在点击标签时触发,tab-remove 事件在删除标签时触发,edit 事件在点击新增或删除按钮时触发。

methods: {
  handleClick(tab) {
    console.log('Clicked tab:', tab)
  },
  handleRemove(name) {
    console.log('Removing tab:', name)
  },
  handleEdit(targetName, action) {
    if (action === 'add') {
      this.addTab()
    } else if (action === 'remove') {
      this.removeTab(targetName)
    }
  }
}

嵌套标签页实现

ElementUI 支持多层嵌套的标签页结构,可以在一个标签页内再嵌套另一组标签页。这种设计适合需要多级分类的场景。

<el-tabs v-model="outerActiveName">
  <el-tab-pane label="外层标签一" name="outer1">
    <el-tabs v-model="innerActiveName">
      <el-tab-pane label="内层标签A" name="innerA">内容A</el-tab-pane>
      <el-tab-pane label="内层标签B" name="innerB">内容B</el-tab-pane>
    </el-tabs>
  </el-tab-pane>
  <el-tab-pane label="外层标签二" name="outer2">外层内容二</el-tab-pane>
</el-tabs>

标签页与路由集成

将标签页与 Vue Router 集成可以实现基于路由的标签页导航。通过监听路由变化动态更新激活的标签页,或通过点击标签页切换路由。

elementui tabs

watch: {
  '$route'(to) {
    this.activeName = to.name
  }
},
methods: {
  handleTabClick(tab) {
    this.$router.push({ name: tab.name })
  }
}

自定义标签页样式

通过覆盖 ElementUI 的默认样式或使用插槽可以自定义标签页的外观。label 插槽允许完全自定义标签内容,包括添加图标或其他自定义元素。

<el-tabs>
  <el-tab-pane>
    <template #label>
      <span><i class="el-icon-date"></i> 自定义标签</span>
    </template>
    自定义标签内容
  </el-tab-pane>
</el-tabs>

<style>
.el-tabs__item {
  font-size: 16px;
}
.el-tabs__nav-wrap::after {
  background-color: #409EFF;
}
</style>

响应式标签页布局

针对不同屏幕尺寸,可以调整标签页的布局方式。结合 CSS 媒体查询和 ElementUI 的响应式特性,确保在各种设备上都有良好的显示效果。

@media (max-width: 768px) {
  .el-tabs__nav {
    flex-wrap: wrap;
  }
  .el-tabs__item {
    padding: 0 10px;
  }
}

标签页性能优化

当标签页内容较复杂或包含大量数据时,可以使用 v-ifkeep-alive 优化性能。lazy 属性可以延迟渲染未激活的标签页内容。

<el-tabs v-model="activeName" type="border-card">
  <el-tab-pane name="first" lazy>
    <complex-component v-if="activeName === 'first'"/>
  </el-tab-pane>
  <el-tab-pane name="second" lazy>
    <another-component v-if="activeName === 'second'"/>
  </el-tab-pane>
</el-tabs>

标签: elementuitabs
分享给朋友:

相关文章

elementui响应式布局

elementui响应式布局

响应式布局基础概念 响应式布局指页面能够根据屏幕尺寸自动调整结构和样式,确保在不同设备上呈现良好的用户体验。Element UI 基于 Vue.js,其组件默认支持响应式设计,但需结合 CSS 媒体查…

elementui中文网

elementui中文网

Element UI 中文网相关信息 Element UI 是一款基于 Vue.js 的开源 UI 组件库,由饿了么前端团队开发和维护。以下是关于 Element UI 中文网的相关信息: 官方网…

elementui table

elementui table

ElementUI Table 基本用法 ElementUI 的 Table 组件用于展示结构化数据,支持排序、筛选、分页等功能。以下是一个基础示例: <template> &…

vue elementui

vue elementui

Vue 中使用 Element UI Element UI 是一套基于 Vue 2.0 的桌面端组件库,提供丰富的 UI 组件和交互功能。以下是如何在 Vue 项目中集成和使用 Element UI…

elementui组件

elementui组件

ElementUI 组件概述 ElementUI 是一套基于 Vue.js 的桌面端组件库,提供丰富的 UI 组件,适用于快速开发中后台系统。以下是其核心组件分类及典型用法。 基础组件 Butto…

elementui router

elementui router

Element UI 结合 Vue Router 的使用方法 Element UI 是一个基于 Vue.js 的组件库,而 Vue Router 是 Vue.js 的官方路由管理器。将两者结合使用可以…