詳解el-table表頭文字換行的三種方式
問題描述
表格中的表頭一般都是不換行的,不過有時(shí)候在某些業(yè)務(wù)場(chǎng)景中,需要讓表頭的文字換行展示一下,我們先看一下效果圖
效果圖

三種方式的代碼
看注釋就行啦。
演示的話,直接復(fù)制粘貼運(yùn)行就行啦
<template>
<div class="vueWrap">
<el-table
style="width: 900px"
:data="tableBody"
border
:header-cell-style="{
background: '#FAFAFA',
color: '#333333',
fontWeight: 'bold',
fontSize: '14px',
}"
>
<el-table-column
type="index"
label="序號(hào)"
width="58"
align="center"
></el-table-column>
<!-- 表頭換行方式一,使用頭部插槽方式,將表頭文字拆分在兩個(gè)div中,因?yàn)閐iv盒子是塊元素
所以兩個(gè)div會(huì)換行,所以表頭就換行了,此方式適用于固定數(shù)據(jù)的表頭換行 -->
<el-table-column prop="toolName" width="180" align="center">
<template slot="header">
<div>工具箱</div>
<div>零件名稱</div>
</template>
<template slot-scope="scope">
<span>{{ scope.row.toolName }}</span>
</template>
</el-table-column>
<el-table-column label="供應(yīng)商" prop="supplier" width="120" align="center">
</el-table-column>
<!-- 表頭換行方式二,較之于方式一,這種方式是/n換行符,加css的white-space空白樣式控制-->
<el-table-column
:label="labelFn()"
prop="supplierCountry"
width="180"
align="center"
>
</el-table-column>
<!-- 表頭換行方式三,動(dòng)態(tài)方式 -->
<el-table-column
v-for="(item, index) in tableHeader"
:key="index"
:label="item.labelName"
:prop="item.propName"
width="180"
align="center"
:render-header="renderheader"
></el-table-column>
</el-table>
</div>
</template>
<script>
export default {
data() {
return {
// 動(dòng)態(tài)數(shù)據(jù)表頭就需要讓后端返回來了,讓其在需要換行的地方用逗號(hào)分隔開
tableHeader: [
{
labelName: "型號(hào)001,價(jià)格(元)",
propName: "typeOne",
},
{
labelName: "型號(hào)002,價(jià)格(元)",
propName: "typeTwo",
},
],
// 表體數(shù)據(jù)
tableBody: [
{
id: "2021111101",
toolName: "5G服務(wù)",
supplier: "華為",
supplierCountry: "中國",
typeOne: "8888888",
typeTwo: "9999999",
},
{
id: "2021111101",
toolName: "6G-SERVER",
supplier: "中華有為",
supplierCountry: "CHINA",
typeOne: "678678678",
typeTwo: "789789789",
},
],
};
},
methods: {
labelFn() {
// 在需要換行的地方加入換行符 \n ,在搭配最底下的white-space樣式設(shè)置
return `供應(yīng)商\n所屬國家`;
},
// 餓了么UI的表頭函數(shù)渲染方式,這種方式和表頭插槽方式有點(diǎn)類似
// 也是把表頭的數(shù)據(jù)文字分割成兩塊,然后將內(nèi)容渲染到兩個(gè)div中(div自動(dòng)換行)
renderheader(h, { column, $index }) {
return h("div", {}, [
h("div", {}, column.label.split(",")[0]),
h("div", {}, column.label.split(",")[1]),
]);
},
},
};
</script>
<style lang="less" scoped>
/deep/ .el-table th.el-table__cell > .cell {
white-space: pre;
// white-space: pre-wrap; // 也行。
}
</style>
關(guān)于white-space不贅述,詳情查詢官方文檔 developer.mozilla.org/zh-CN/docs/Web/CSS/white-space
總結(jié)
三種方式各有特色,但是render-header會(huì)略為耗費(fèi)一點(diǎn)點(diǎn)性能。
若為固定表頭數(shù)據(jù),則優(yōu)先推薦使用表頭插槽方式,其次推薦換行符加css方式。
若為動(dòng)態(tài)數(shù)據(jù),則只能使用表頭renderheader函數(shù)了
到此這篇關(guān)于el-table表頭文字換行的三種方式的文章就介紹到這了,更多相關(guān)el-table表頭文字換行的三種方式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue中$emit傳遞多個(gè)參(arguments和$event)
本文主要介紹了vue中$emit傳遞多個(gè)參(arguments和$event),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
vue使用節(jié)流函數(shù)的踩坑實(shí)例指南
防抖和節(jié)流的目的都是為了減少不必要的計(jì)算,下面這篇文章主要給大家介紹了關(guān)于vue使用節(jié)流函數(shù)踩坑的相關(guān)資料,需要的朋友可以參考下2021-05-05
vue使用監(jiān)聽實(shí)現(xiàn)全選反選功能
最近做的項(xiàng)目用到了全選全不選功能,于是我就自己動(dòng)手寫了一個(gè),基于vue使用監(jiān)聽實(shí)現(xiàn)全選反選功能,具體實(shí)例代碼大家參考下本文2018-07-07

