当前位置:首页 > VUE

vue实现多级表头展示

2026-01-23 06:33:40VUE

Vue实现多级表头的方法

使用el-table组件结合嵌套表头配置可以实现多级表头展示。通过el-table-column的嵌套结构定义层级关系。

<template>
  <el-table :data="tableData">
    <el-table-column prop="date" label="日期" width="150"></el-table-column>
    <el-table-column label="配送信息">
      <el-table-column prop="name" label="姓名" width="120"></el-table-column>
      <el-table-column label="地址">
        <el-table-column prop="province" label="省份" width="120"></el-table-column>
        <el-table-column prop="city" label="市区" width="120"></el-table-column>
        <el-table-column prop="address" label="详细地址"></el-table-column>
      </el-table-column>
    </el-table-column>
  </el-table>
</template>

动态生成多级表头

当表头数据需要从后端获取时,可以使用递归组件实现动态渲染。

vue实现多级表头展示

<template>
  <el-table :data="tableData">
    <multi-header :columns="headerColumns"></multi-header>
  </el-table>
</template>

<script>
import MultiHeader from './MultiHeader.vue'

export default {
  components: { MultiHeader },
  data() {
    return {
      headerColumns: [
        { prop: 'date', label: '日期' },
        { 
          label: '配送信息',
          children: [
            { prop: 'name', label: '姓名' },
            { 
              label: '地址',
              children: [
                { prop: 'province', label: '省份' },
                { prop: 'city', label: '市区' }
              ]
            }
          ]
        }
      ]
    }
  }
}
</script>

递归组件实现

创建MultiHeader.vue组件处理嵌套表头:

vue实现多级表头展示

<template>
  <template v-for="col in columns">
    <el-table-column 
      v-if="!col.children"
      :key="col.prop"
      :prop="col.prop"
      :label="col.label">
    </el-table-column>

    <el-table-column 
      v-else
      :key="col.label"
      :label="col.label">
      <multi-header :columns="col.children"></multi-header>
    </el-table-column>
  </template>
</template>

<script>
export default {
  name: 'MultiHeader',
  props: {
    columns: Array
  }
}
</script>

合并表头单元格

对于需要横向合并的表头,可以使用colspan属性配合自定义表头渲染。

<el-table-column label="操作" width="180">
  <template #header>
    <div style="text-align: center">操作</div>
  </template>
  <template #default="{row}">
    <el-button size="mini">编辑</el-button>
    <el-button size="mini" type="danger">删除</el-button>
  </template>
</el-table-column>

样式调整技巧

多级表头可能需要调整样式以保证显示效果:

/* 表头行高调整 */
.el-table__header tr {
  line-height: 30px;
}

/* 表头边框调整 */
.el-table__header th {
  border-right: 1px solid #ebeef5;
}

/* 表头文字居中 */
.el-table__header .cell {
  text-align: center;
}

注意事项

  • 多级表头会增加表格的复杂度,建议层级不超过3层
  • 每列需要明确指定宽度或设置最小宽度,防止内容挤压
  • 表头层级过深时考虑使用分组表头替代
  • 移动端显示多级表头需要额外响应式处理

标签: 表头vue
分享给朋友:

相关文章

vue 实现轮播

vue 实现轮播

Vue 实现轮播的方法 使用第三方库(如 Swiper) 安装 Swiper 库: npm install swiper 在 Vue 组件中引入 Swiper: <template&…

vue环境实现

vue环境实现

Vue 环境搭建 安装 Node.js 和 npm Node.js 是运行 Vue 的基础环境,npm 是包管理工具。从 Node.js 官网 下载并安装最新稳定版本。安装完成后,在终端运行以下命令验…

vue实现xterm

vue实现xterm

在 Vue 中集成 Xterm.js Xterm.js 是一个基于 TypeScript 的前端终端组件库,可用于在浏览器中实现终端功能。以下是在 Vue 项目中集成 Xterm.js 的详细步骤。…

vue实现tip

vue实现tip

Vue实现Tooltip的方法 使用Vue实现Tooltip可以通过多种方式完成,以下是几种常见的方法: 使用原生HTML的title属性 在Vue模板中直接使用HTML的title属性是最简单的实…

vue实现ftp

vue实现ftp

Vue 中实现 FTP 功能 Vue 本身是一个前端框架,无法直接操作 FTP 协议(FTP 通常需要后端支持)。以下是两种常见实现方式: 前端与后端配合实现 FTP 前端通过 API 与后端通信,…

vue 实现token 登录

vue 实现token 登录

安装依赖 确保项目中已安装 axios 和 vue-router。若未安装,可通过以下命令安装: npm install axios vue-router 配置axios拦截器 在 src 目录下创…