element?ui設(shè)置table自適應(yīng)表格寬,不自動(dòng)換行問題
element ui設(shè)置table自適應(yīng)表格寬,不自動(dòng)換行
在我們平常開發(fā)使用element ui中的table時(shí),會(huì)出現(xiàn)數(shù)據(jù)過長自動(dòng)換行的結(jié)果,
如果把寬給死的情況下也不太適合,接下來提供二種方式去動(dòng)態(tài)計(jì)算每個(gè)盒子的寬度。
第一種方式
- 表格加** 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>
但這種方式純在二個(gè)問題
1.el-table-column左側(cè)多個(gè)列加fixed屬性,左右滑動(dòng),列寬得提前計(jì)算
2.el-table設(shè)置table-layout='auto’ 與 固定表頭 的功能沖突,表頭無法再固定
第二種方式 (推薦使用第二種方式)
第二種方式就是通過canvas動(dòng)態(tài)計(jì)算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有一個(gè)必傳 */ 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)題為空的留出四個(gè)位置 const column_w = context.measureText(columnContent).width const title_w = context.measureText(title).width if (column_w < title_w) { columnContent = title || '占位符呀' } } // 計(jì)算最寬內(nèi)容的列寬 let width = context.measureText(columnContent) flexWidth = width.width + 40 + num return flexWidth + 'px' }, </script>
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue項(xiàng)目實(shí)現(xiàn)添加圖片裁剪組件
這篇文章主要為大家詳細(xì)介紹了vue項(xiàng)目實(shí)現(xiàn)添加圖片裁剪組件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03Vue.js點(diǎn)擊切換按鈕改變內(nèi)容的實(shí)例講解
今天小編就為大家分享一篇Vue.js點(diǎn)擊切換按鈕改變內(nèi)容的實(shí)例講解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08vue子組件改變父組件傳遞的prop值通過sync實(shí)現(xiàn)數(shù)據(jù)雙向綁定(DEMO)
本文通過一個(gè)demo給大家介紹了vue子組件改變父組件傳遞的prop值通過sync實(shí)現(xiàn)數(shù)據(jù)雙向綁定,代碼簡單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02Vue.js獲取被選擇的option的value和text值方法
今天小編就為大家分享一篇Vue.js獲取被選擇的option的value和text值方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08Vue仿微信app頁面跳轉(zhuǎn)動(dòng)畫效果
這篇文章主要介紹了Vue仿微信app頁面跳轉(zhuǎn)動(dòng)畫效果,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08Vue結(jié)合Element-Plus封裝遞歸組件實(shí)現(xiàn)目錄示例
本文主要介紹了Vue結(jié)合Element-Plus封裝遞歸組件實(shí)現(xiàn)目錄示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04Vue關(guān)于組件化開發(fā)知識(shí)點(diǎn)詳解
在本篇文章里,小編給大家分享的是關(guān)于Vue關(guān)于組件化開發(fā)知識(shí)點(diǎn)詳解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2020-05-05