詳解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: "中國(guó)", 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所屬國(guó)家`; }, // 餓了么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中keep-alive內(nèi)置組件緩存的實(shí)例代碼
這篇文章主要介紹了vue中的keep-alive內(nèi)置組件緩存,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04vue中el-form-item展開項(xiàng)居中的實(shí)現(xiàn)方式
這篇文章主要介紹了vue中el-form-item展開項(xiàng)居中的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10Vue?通過this.$emit()方法子組件向父組件傳值(步驟分享)
這篇文章主要介紹了Vue?this.$emit()方法通過子組件向父組件傳值,第一步在父組件中引入子組件,第二步子組件向父組件傳值,本文通過需要的朋友可以參考下2022-11-11vue項(xiàng)目中echarts自適應(yīng)問題的高級(jí)解決過程
雖然老早就看過很多echarts的例子,但自己接觸的項(xiàng)目中一直都沒有真正用到過,直到最近才開始真正使用,下面這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目中echarts自適應(yīng)問題的高級(jí)解決過程,需要的朋友可以參考下2023-05-05Vue3后臺(tái)管理系統(tǒng)之創(chuàng)建和配置項(xiàng)目
后臺(tái)管理系統(tǒng)是我們?nèi)粘i_發(fā)學(xué)習(xí)經(jīng)常遇到的一個(gè)項(xiàng)目,下面這篇文章主要給大家介紹了關(guān)于Vue3后臺(tái)管理系統(tǒng)之創(chuàng)建和配置項(xiàng)目的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09