elementui el-table-column表头换行,自定义表头以及排序图标的位置放置

文章介绍了如何在ElementUI的表格组件中实现表头换行并调整文字和排序图标的位置。通过修改CSS样式,如添加`white-space:pre`,以及使用`slot`和`label-class-name`来自定义表头,最终实现了表头文字换行且排序图标居中显示的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、普通表头换行

https://www.jb51.net/article/228935.htm
// 在需要换行的地方加入换行符 \n ,在搭配最底下的white-space样式设置

⭐️想实现以下效果

在这里插入图片描述

 <div>
    <el-row :gutter="10">
       <el-col :span="24">
		<el-table
            ref="eliTable"
            :border="false"
            :data="tableData"
            :cell-style="{padding:'5px 1px'}"
            style="width: 100%;padding: 0px 20px;">
            <el-table-column
              :label="'季节性\n月份'"
              prop="seasonalMonths"
              header-align="left"
              align="left"
              min-width="140"/>
        </el-table>
      </el-col>
    </el-row>
  </div>
/* 表格表头背景*/
/deep/.el-table thead{
  background: #F5F7FA;
  font-weight: 500;
  color: #1C2029;
}
/* 表格表头背景*/
/deep/.el-table th.el-table__cell{
  background: #F5F7FA;
}
/*表头换行 加这段代码*/
/deep/ .el-table th.el-table__cell > .cell {
  white-space: pre;
}
/*表格表头样式*/
/deep/.el-table .el-table__cell {
  padding: 0px;
  min-width: 0;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
  text-overflow: ellipsis;
  vertical-align: middle;
  position: relative;
  text-align: left;
}

2、表头换行时调整文字和排序图标的位置

⭐️想实现以下效果

在这里插入图片描述
表头文字过长要换行显示,让排序图标位于两行文字右边,居中显示。

现在将解决问题的过程记录一下:
1、首先想到的办法是使用上述方法,表头文字虽然换行显示了,但是并没有达到想要的效果。代码如下:

 <el-table-column
          :label="'上一财务年\n销售量'"
          prop="sale_qty"
          align="right"
          header-align="right"
          sortable="custom"
          label-class-name="column_caret"
          min-width="130%">
          <template slot-scope="scope">
            {{ formatData(scope.row.sale_qty) }}
          </template>
        </el-table-column>
/*表头换行*/
/deep/.el-table .cell {
  white-space: pre-line;
}

遇到问题 效果如下

在这里插入图片描述
2、之后想到一个笨方法,在第一行以后加空格,让第一行文字向左边移动一些。代码如下:

<el-table-column
          :label="'上一财务年\n销售量'"
          prop="sale_qty"
          align="right"
          header-align="right"
          sortable="custom"
          label-class-name="column_caret"
          min-width="130%">
          <template slot-scope="{}" slot="header" >
            <span>上一财务年&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>销售量</span>
          </template>
          <template slot-scope="scope">
            {{ formatData(scope.row.sale_qty) }}
          </template>
        </el-table-column>

自定义表头之后下边样式代码就不生效了,删掉就行了

/*!*表头换行*!*/
/*/deep/.el-table .cell {*/
/*  white-space: pre-line;*/
/*}*/

遇到问题 效果如下

在这里插入图片描述
3、在控制台调试,想把排序图标上移

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
成功实现效果的代码如下:

<el-table-column
          :label="'上一财务年\n销售量'"
          prop="sale_qty"
          align="right"
          header-align="right"
          sortable="custom"
          label-class-name="column_caret"
          min-width="130%">
          <template slot-scope="{}" slot="header" >
            <span>上一财务年&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>销售量</span>
          </template>
          <template slot-scope="scope">
            {{ formatData(scope.row.sale_qty) }}
          </template>
        </el-table-column>
  /deep/.column_caret .caret-wrapper {
    margin-top: -19px;
  }

其中使用了elementui中的 label-class-name属性自定义列标题的类名
在这里插入图片描述
此时这段代码不起作用,可以删掉。

/*!*表头换行*!*/
/*/deep/.el-table .cell {*/
/*  white-space: pre-line;*/
/*}*/

⭐️最终成功实现以下效果

在这里插入图片描述

3、tooltip+排序图标在这里插入图片描述

          <el-table-column :sortable="'custom'" prop="title" label="标题" header-align="right" align="right" min-width="110%">
            <template slot-scope="{}" slot="header">
              <span>标题</span>
              <el-tooltip
                class="item"
                effect="dark"
                content=""
                placement="top">
                <img src="../../../../../../assets/supplier_img/tips.png" alt="" style="margin-top: -2px;">
                <div slot="content" style="width: 205px;line-height: 22px">
                  这是一个标题
                </div>
              </el-tooltip>
            </template>
            <template slot-scope="scope">
              <span>{{ formatData(scope.row.title) }}</span>
            </template>
          </el-table-column>
  • 如果大家有其他好的解决办法,欢迎大家留言,谢谢大家!
  • 我们互相学习,共同进步,永远在学习的路上!

👍写在最后

希望我的分享能够帮助到更多的人,如果觉得我的分享有帮助的话,请大家一键三连支持一下哦~
原创不易,期待你的关注与支持~
点赞❤+收藏❤+评论❤
之后我会继续更新前端学习小知识,关注我不迷路~

### Element UI el-table 二级表头自定义换行实现 为了实现在 `el-table` 组件中创建带有自定义换行功能的二级表头,可以采用以下方式: #### 使用具名插槽定制表头 通过 Vue 的作用域插槽机制来覆盖默认渲染逻辑,允许更灵活地控制表头内容及其样式。对于多级表头场景,则需利用嵌套结构配合 CSS 来达到理想布局。 ```html <template> <div id="app"> <!-- 定义表格 --> <el-table :data="tableData" border style="width: 100%"> <!-- 自定义顶部一级表头 --> <el-table-column label="基本信息" width="280px"> <template slot="header" slot-scope="{}"> <span>基<br/>本信<br/>息</span> </template> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="age" label="年龄"></el-table-column> </el-table-column> <!-- 其他列... --> </el-table> </div> </template> ``` 上述代码片段展示了如何使用 `<template>` 标签内的 `slot="header"` 属性来自定义特定列的头部区域,并借助 HTML 换行标签 (`<br />`) 实现文字分隔显示[^1]。 此外,在某些情况下仅靠简单的HTML标签无法满足需求时,还可以引入额外CSS类进一步调整视觉呈现效果: ```css /* 添加到全局或局部样式文件 */ .custom-header .cell { line-height: normal !important; } ``` 同时给对应的 `el-table-column` 加上该class名称以便应用这些样式规则: ```html <el-table-column :class-name="'custom-header'" ... > ... </el-table-column> ``` 这种方法不仅适用于单层或多层级别的表头处理,而且能够很好地兼容不同浏览器环境下的表现一致性问题[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小魔女千千鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值