element?ui設(shè)置table自適應(yīng)表格寬,不自動換行問題
element ui設(shè)置table自適應(yīng)表格寬,不自動換行
在我們平常開發(fā)使用element ui中的table時,會出現(xiàn)數(shù)據(jù)過長自動換行的結(jié)果,
如果把寬給死的情況下也不太適合,接下來提供二種方式去動態(tài)計算每個盒子的寬度。

第一種方式
- 表格加** table-layout='auto’ **屬性
- 表格加tableAuto類名
- el-table-column標(biāo)簽不設(shè)置寬度
<el-table :data="tableData" table-layout='auto' class="tableAuto">
<el-table-column prop="name" label="名稱" />
</el-table>
// 設(shè)置超出不折行
<style>
.tableAuto.el-table .cell {
white-space: nowrap;
}
</style>
但這種方式純在二個問題
1.el-table-column左側(cè)多個列加fixed屬性,左右滑動,列寬得提前計算
2.el-table設(shè)置table-layout='auto’ 與 固定表頭 的功能沖突,表頭無法再固定
第二種方式 (推薦使用第二種方式)
第二種方式就是通過canvas動態(tài)計算el-table-column寬度,可以完美解決第一種方式的2中弊端。
<template>
<el-table>
<el-table-column :width="flexWidth(item.en, tableData, item.cn)"></el-table-column>
</el-table>
</temolate>
<script>
/**
* dynamicCalculationWidth
* @param string | number prop 每列的prop 可傳''
* @param array tableData 表格數(shù)據(jù)
* @param string | number title 標(biāo)題長內(nèi)容短的,傳標(biāo)題 可不傳
* @param number num 列中有標(biāo)簽等加的富余量
* @returns 每列的寬度
* 注:prop,title有一個必傳
*/
dynamicCalculationWidth(prop, tableData, title, num = 0) {
if (tableData.length === 0) {
// 表格沒數(shù)據(jù)不做處理
return
}
let flexWidth = 0 // 初始化表格列寬
let columnContent = '' // 占位最寬的內(nèi)容
let canvas = document.createElement('canvas')
let context = canvas.getContext('2d')
context.font = '14px Microsoft YaHei'
if (prop === '' && title) {
// 標(biāo)題長內(nèi)容少的,取標(biāo)題的值,
columnContent = title
} else {
// 獲取該列中占位最寬的內(nèi)容
let index = 0
for (let i = 0; i < tableData.length; i++) {
const now_temp = tableData[i][prop] + ''
const max_temp = tableData[index][prop] + ''
const now_temp_w = context.measureText(now_temp).width
const max_temp_w = context.measureText(max_temp).width
if (now_temp_w > max_temp_w) {
index = i
}
}
columnContent = tableData[index][prop]
// 比較占位最寬的值跟標(biāo)題、標(biāo)題為空的留出四個位置
const column_w = context.measureText(columnContent).width
const title_w = context.measureText(title).width
if (column_w < title_w) {
columnContent = title || '占位符呀'
}
}
// 計算最寬內(nèi)容的列寬
let width = context.measureText(columnContent)
flexWidth = width.width + 40 + num
return flexWidth + 'px'
},
</script>
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
uni-app中使用ECharts配置四種不同的圖表(示例詳解)
在uni-app中集成ECharts可以為我們的應(yīng)用提供強大的圖表功能,我們詳細(xì)說一下如何在uni-app中使用ECharts,并配置四種不同的圖表,感興趣的朋友跟隨小編一起看看吧2024-01-01
vue如何轉(zhuǎn)換時間格式為年月日時分秒和年月日(補零)
這篇文章主要介紹了vue如何轉(zhuǎn)換時間格式為年月日時分秒和年月日(補零),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-04-04
vue使用better-scroll實現(xiàn)橫向滾動的方法實例
這幾天研究項目時,看到了 better-scroll 插件,看著感覺功能挺強,這篇文章主要給大家介紹了關(guān)于vue使用better-scroll實現(xiàn)橫向滾動的相關(guān)資料,需要的朋友可以參考下2021-06-06
Vue3?響應(yīng)式系統(tǒng)實現(xiàn)?computed
這篇文章主要介紹了?Vue3?響應(yīng)式系統(tǒng)實現(xiàn)?computed,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下2022-06-06
基于Vue+ELement搭建動態(tài)樹與數(shù)據(jù)表格實現(xiàn)分頁模糊查詢實戰(zhàn)全過程
這篇文章主要給大家介紹了關(guān)于如何基于Vue+ELement搭建動態(tài)樹與數(shù)據(jù)表格實現(xiàn)分頁模糊查詢的相關(guān)資料,Vue Element UI提供了el-pagination組件來實現(xiàn)表格數(shù)據(jù)的分頁功能,需要的朋友可以參考下2023-10-10
基于Vue實現(xiàn)tab欄切換內(nèi)容不斷實時刷新數(shù)據(jù)功能
在項目開發(fā)中遇到這樣需求,就是有幾個tab欄,每個tab欄對應(yīng)的ajax請求不一樣,內(nèi)容區(qū)域一樣,內(nèi)容為實時刷新數(shù)據(jù),實現(xiàn)方法其實很簡單的,下面小編給大家?guī)砹嘶赩ue實現(xiàn)tab欄切換內(nèi)容不斷實時刷新數(shù)據(jù)功能,需要的朋友參考下吧2017-04-04

