当前位置:首页 > 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实现放大缩小功能的方法 在Vue中实现元素的放大缩小功能,可以通过CSS变换、第三方库或直接操作DOM样式来实现。以下是几种常见的方法: 使用CSS transform属性 通过绑定Vue的d…

vue实现全景

vue实现全景

Vue 实现全景效果的方法 使用 Vue 实现全景效果通常需要结合第三方库或框架,以下是几种常见的方法: 使用 Three.js 和 Vue-Three.js Three.js 是一个强大的 3D…

vue mvvm实现

vue mvvm实现

Vue MVVM 实现原理 Vue.js 是一个基于 MVVM(Model-View-ViewModel)模式的框架,其核心是通过数据绑定和响应式系统实现视图与数据的自动同步。以下是 Vue 实现 M…

vue filter 实现

vue filter 实现

在 Vue.js 中,过滤器(Filter)是一种用于文本格式化的功能,可以在模板中直接使用。以下是实现过滤器的详细方法: 全局过滤器注册 通过 Vue.filter 方法注册全局过滤器,可在所有组…

vue实现hexo

vue实现hexo

Vue 集成 Hexo 的实现方法 Hexo 是一个静态博客框架,而 Vue 是一个前端框架。将 Vue 集成到 Hexo 中可以通过以下方式实现: 在 Hexo 中使用 Vue 组件 通过 Hex…

vue实现tooltips

vue实现tooltips

Vue 实现 Tooltips 的方法 使用原生 HTML title 属性 在 Vue 模板中直接使用 HTML 原生 title 属性实现简单的提示效果。这种方式无需额外依赖,但功能较为基础,无法…