Vue動(dòng)態(tài)設(shè)置el-table操作列的寬度自適應(yīng)
一、問題
用el-table組件開發(fā)時(shí),對于表格的操作列的自適應(yīng)寬度是一個(gè)問題,如果不設(shè)置,操作按鈕多時(shí)會(huì)有換行問題。如果設(shè)置最小寬度或?qū)挾葧r(shí),又會(huì)出現(xiàn)當(dāng)條件不滿足時(shí),按鈕顯示的少,但操作列的寬度太寬,顯示多余的空白。尤其對于字段較多,操作列固定情況下,現(xiàn)得特別浪費(fèi)空間。
寬度不足情況

寬度充足但條件不足情況

期望情況
操作列可以根據(jù)按鈕情況自適應(yīng)寬度,按鈕少時(shí)寬度變小,按鈕多時(shí)自動(dòng)增加寬度。


二、解決方案
網(wǎng)上查了一下對列內(nèi)容的自適應(yīng)的方案較多,但對操作列的自適應(yīng)卻沒有找到相關(guān)的方案。不過按照內(nèi)容自適應(yīng)的方案的原理,本人實(shí)現(xiàn)了一下,發(fā)現(xiàn)可以解決。
思路
通過CSS的 white-space: nowrap; display: inline-block設(shè)置內(nèi)容不換行,然后計(jì)算div的寬度來重新設(shè)置列頭屬性,
依賴屬性:
- CSS:
white-space: nowrap; display: inline-block - Table-column Attributes:
render-header:列標(biāo)題 Label 區(qū)域渲染使用的 Function
代碼示例
<template>
<div>
<el-table :data="tableData" style="width: 100%" :border="true" fit>
<el-table-column type="index" width="50" label="No" fixed> </el-table-column>
<el-table-column prop="date" label="日期" width="150" fixed> </el-table-column>
<el-table-column prop="name" label="姓名" width="120"> </el-table-column>
<el-table-column prop="province" label="省份" width="120"> </el-table-column>
<el-table-column prop="address" label="地址" minWidth="260"> </el-table-column>
<el-table-column prop="zip" label="郵編" minWidth="120"> </el-table-column>
<el-table-column label="操作" fixed="right" :render-header="renderHeader">
<template slot-scope="scope">
<div class="optionDiv" style="white-space: nowrap; display: inline-block">
<el-button type="text" size="small"> 新增 </el-button>
<el-button type="text" size="small"> 編輯 </el-button>
<el-button v-if="scope.row.type == 2 || scope.row.type == 3" type="text" size="small"> 移除 </el-button>
<el-button v-if="scope.row.type == 2 || scope.row.type == 3" type="text" size="small"> 詳情 </el-button>
<el-button v-if="scope.row.type == 3 || scope.row.type == 3" type="text" size="small"> 下發(fā) </el-button>
</div>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script>
export default {
data() {
return {
tableData: [
{
date: '2016-05-03',
name: '王小虎',
province: '上海',
address: '上海市普陀區(qū)金沙江路 1518 弄',
zip: 200333,
type: 1
},
{
date: '2016-05-02',
name: '王小虎',
province: '上海',
address: '上海市普陀區(qū)金沙江路 1518 弄',
zip: 200333,
type: 2
},
{
date: '2016-05-02',
name: '王小虎',
province: '上海',
address: '上海市普陀區(qū)金沙江路 1518 弄',
zip: 200333,
type: 3
}
]
};
},
methods: {
// 表頭部重新渲染
renderHeader(h, { column, $index }) {
// 獲取操作按鈕組的元素
const opts = document.getElementsByClassName('optionDiv');
let widthArr = [];
// 取操作組的最大寬度
Array.prototype.forEach.call(opts, function (item) {
if (item.innerText) {
widthArr.push(item.offsetWidth);
}
});
// 重新設(shè)置列標(biāo)題及寬度屬性
if (widthArr.length > 0) {
column.width = Math.max(...widthArr) + 24;
return h('span', column.label);
} else {
column.width = 0;
return h('span', column.label);
}
}
}
};
</script>最終效果
分別為兩列、三列和四列操作的展示效果

總結(jié)
到此這篇關(guān)于Vue動(dòng)態(tài)設(shè)置el-table操作列的寬度自適應(yīng)的文章就介紹到這了,更多相關(guān)el-table列寬度自適應(yīng)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Vue3中el-table表格數(shù)據(jù)不顯示的原因和解決方法
- vue?el-table實(shí)現(xiàn)動(dòng)態(tài)添加行和列具體代碼
- Vue+EleMentUI實(shí)現(xiàn)el-table-colum表格select下拉框可編輯功能實(shí)例
- vue element-ui實(shí)現(xiàn)el-table表格多選以及回顯方式
- vue中el-table合并列的具體實(shí)現(xiàn)
- Vue element el-table-column中對日期進(jìn)行格式化方式(全局過濾器)
- Vue中如何合并el-table第一列相同數(shù)據(jù)
- vue element-ui el-table組件自定義合計(jì)(summary-method)的坑
- el-table 選擇框根據(jù)條件設(shè)置某項(xiàng)不可選中的操作代碼
相關(guān)文章
vue+elementUI組件tree如何實(shí)現(xiàn)單選加條件禁用
這篇文章主要介紹了vue+elementUI組件tree如何實(shí)現(xiàn)單選加條件禁用,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09
vue+mockjs模擬數(shù)據(jù)實(shí)現(xiàn)前后端分離開發(fā)的實(shí)例代碼
本篇文章主要介紹了vue+mockjs模擬數(shù)據(jù)實(shí)現(xiàn)前后端分離開發(fā)的實(shí)例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08
elementui的el-popover修改樣式不生效的解決
在使用element-ui的時(shí)候,有一個(gè)常用的組件,那就是el-popover,本文就介紹一下elementui的el-popover修改樣式不生效的解決方法,感興趣的可以了解一下2021-06-06
el-input輸入校驗(yàn)不能為空格以及不能輸入全部為空的內(nèi)容
這篇文章主要給大家介紹了關(guān)于el-input輸入校驗(yàn)不能為空格以及不能輸入全部為空的內(nèi)容的相關(guān)資料,el-input驗(yàn)證規(guī)則主要是為了確保輸入的內(nèi)容符合特定的要求,需要的朋友可以參考下2023-10-10
ElementUI多個(gè)子組件表單的校驗(yàn)管理實(shí)現(xiàn)
這篇文章主要介紹了ElementUI多個(gè)子組件表單實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
element-ui之關(guān)于組件BackToTop回到頂部的使用
這篇文章主要介紹了element-ui之關(guān)于組件BackToTop回到頂部的使用,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03

