项目上有一个需求,需要用el-table来显示数据,有一个要求就是不能换行。表头不能换行,表格里面的内容也不能换行。
同事写的页面使用的是vue3,自定义了一个事件来动态变化每一列的参数。我将其挪用到vue2中完全没法使用。只能在网上查找资料来实现它。
表格通过接口来获取,接口中将表头标题和表格内容分开来的。
基本思路就是:表格内容限制不换行,不使用缩略符号。
首先从表头开始,在el-table-column中有一个render-header
// 表头部重新渲染
renderHeader(h, { column, $index }) {
// 新建一个 span
let span = document.createElement('span');
// 设置表头名称
span.innerText = column.label;
// 临时插入 document
document.body.appendChild(span);
// 重点:获取 span 最小宽度,设置当前列,注意这里加了 20,字段较多时还是有挤压,且渲染后的 div 内左右 padding 都是 10,所以 +20 。(可能还有边距/边框等值,需要根据实际情况加上)
column.minWidth = (span.getBoundingClientRect().width) + 40;
this.headerLableWidth[column.property] = column.minWidth;
// 移除 document 中临时的 span
document.body.removeChild(span);
return h('span', column.label);
},
column中有这些标题文字信息, 创建一个span标签,添加到文档流中,然后拿到它的宽度,为了多加点宽度,可以额外多加些数值。代码中多加了40宽度。为表头设置最小宽度。
记录这一列的最小宽度,当表

文章介绍了如何在Vue2的el-table组件中处理表头和内容不换行的需求。通过自定义渲染header,计算每个列的最小宽度,并动态设置宽度,确保内容不换行且不使用缩略符号。同时,文章提到了对表格内容的处理,以适应不同字符类型的宽度,并提供了CSS样式以防止文本换行。

4270

被折叠的 条评论
为什么被折叠?



