需求是这样的,之前我也写过,就是前端渲染的表格数据是动态渲染表格的行和列,

那么就必然出现了一个问题,当列超过一定的个数的时候,会出现横向滚动条,

那么怎么让表格整体看起来自然协调一些呢,老大要求表格的单元格宽度根据内容动态计算,最大200px,

so 干吧

template代码:

min-width要动态设置

 <template v-for="(item,i) in table.titleData">
<el-table-column
:min-width="item.columnWidth"
show-overflow-tooltip
:key="i"
v-if="item.is_show == '1'"
:prop="item.field_code"
:label="item.field_title"
align="center"
></el-table-column>
</template>

script代码:

在获取到表格数据的时候,为每个数据对象设置 columnWidth 属性,初始值为50px,

然后在执行 tableWidthAdaptation 方法,这个方法是关键

 if (error == 0) {
// 遍历title_list,将columnWidth:50px写入每个对象中
for(let i in title_list) {
title_list[i].columnWidth = '50px'
}
this.table.groupSearchList = group_list;
this.table.titleData = title_list;
this.table.tables = list;
this.table.total = count;
this.table.currentPage = res.data.result.page; //当前页
setTimeout(function() {
_this.tableWidthAdaptation();
},100);
}
 tableWidthAdaptation() {
let rows = this.$refs.tableData.$el.childNodes[2].childNodes[0].childNodes[1].rows;
let arr = [];
for (let i = 0; i < rows.length; i++) {
for (let j = 0; j < rows[i].cells.length; j++) {
let w = rows[i].cells[j].childNodes[0].childNodes[0].offsetWidth;
if (!arr[j] || arr[j] < w) {
arr[j] = this.columnWidth(w);
}
}
}
// 截取数组
arr.splice(0,2)
arr.splice(-1,1)
let titleData = this.table.titleData
titleData.forEach((item,i)=> {
item.columnWidth = arr[i]
})
this.table.titleData = titleData
},
columnWidth(value, min = 52, max = 200) {
value = Number(value) + 12;
if (value < min) {
return min + "px";
} else if (value > max) {
return max + "px";
} else {
return value + "px";
}
}
let rows = this.$refs.tableData.$el.childNodes[2].childNodes[0].childNodes[1].rows; 获取到了表格的每一行数据
然后通过遍历,得到每一个单元格的宽度 let w = rows[i].cells[j].childNodes[0].offsetWidth;
最后将值赋值到 titleData 中,页面for循环赋值到min-width上面

vue+element 根据内容计算单元格的宽度的更多相关文章

  1. 在Vue&Element前端项目中,对于字典列表的显示处理

    在很多项目开发中,我们为了使用方便,一般都会封装一些自定义组件来简化界面的显示处理,例如参照字典的下拉列表显示,是我们项目中经常用到的功能之一,本篇随笔介绍在Vue&Element前端项目中如 ...

  2. 固定表头,单元格td宽度自适应,多内容出现-横向纵向滚动条数据表格的<前世今生>

    固定表头,单元格td宽度自适应,多内容出现-横向纵向滚动条数据表格的<前世今生>     先上图例   & 无论多少数据--都完美! 背景:由于我司行业方向,需要很多数据报表,则t ...

  3. 循序渐进VUE+Element 前端应用开发(28)--- 附件内容的管理

    在我们很多模块里面,都需要使用到一些诸如图片.Excel文件.PDF文件等附件的管理,一般我们倾向于把它独立为一个公用的附件管理模块,这样可以有效的统一管理附件的信息.本篇随笔介绍附件内容的管理,包括 ...

  4. 在微信框架模块中,基于Vue&Element前端的事件和内容的管理

    在微信后台管理中,我们需要定义好菜单对应的事件管理,因为微信通过菜单触发相关的事件,因此菜单事件的响应关系,我们如果处理好,就能构建出我们的微信应用入口了.通过入口,我们可以响应用户菜单的事件,如响应 ...

  5. 前端小菜鸡使用Vue+Element笔记(一)

    关于使用Vue+Element的项目简介~ 最近因为项目组缺前端人员,所以自己现学现做页面,先把前后台功能调通 觉得前端可真的是不容易呀哎呀~ 首先记录一下相关的Vue入门的教程: vue环境搭建示例 ...

  6. 解决boostrap-table有水平和垂直滚动条时,滚动条滑到最右边表格标题和内容单元格无法对齐的问题

    问题:boostrap-table有水平和垂直滚动条时,滚动条不高的时候(滚动高度比较大的时候没有问题),滚动条滑到最右边表格标题和内容单元格无法对齐的问题 问题原因:bootstrap-table源 ...

  7. NPOI 计算单元格高度

    需求 要导出一个Excel,第一行是不定长字符串,合并单元格(A-G)已知,现要计算第一行的高度. 思路 已知,NPOI的宽度单位是1/256个英文字符,在本例中,A列的宽度是2048,即 2048 ...

  8. Vue + Element 小技巧

    说是小技巧 ,其实就是本人 就是一个小菜比 .如有大佬可以纠正,或者再救救我这个小菜比    跪谢 1.当后台返回一个字段需要根据不同字段内容在表格内显示相对应的文字(字段内容是死的,表格内需要显示对 ...

  9. 新书上线:《Spring Boot+Spring Cloud+Vue+Element项目实战:手把手教你开发权限管理系统》,欢迎大家买回去垫椅子垫桌脚

    新书上线 大家好,笔者的新书<Spring Boot+Spring Cloud+Vue+Element项目实战:手把手教你开发权限管理系统>已上线,此书内容充实.材质优良,乃家中必备垫桌脚 ...

随机推荐

  1. Vi编辑网卡

    Vi /etc/sysconfig/network-scripts/ifcfg-ens33  1.光标定位到BOOTPROTO=后面 2.然后按x键进行删除 3.按i键打开编辑模式,输入BOOTPRO ...

  2. Vue项目零碎知识(全局js,css配置,element-UI,bs使用, img动态配置,js数组)

    全局css样式,首先在静态assets中写好文件,然后要在main.js中配置 // 配置全局css样式 // import '@/assets/css/global.css' require('@/ ...

  3. flink源码学习

    传送门: https://www.jianshu.com/c/c9b356caf8a6

  4. Python正则表达式学习与运用

    一.什么是正则表达式 正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个 ...

  5. Pytorch循环神经网络LSTM时间序列预测风速

    #时间序列预测分析就是利用过去一段时间内某事件时间的特征来预测未来一段时间内该事件的特征.这是一类相对比较复杂的预测建模问题,和回归分析模型的预测不同,时间序列模型是依赖于事件发生的先后顺序的,同样大 ...

  6. ES方法使用注意

    matchQuery:会将搜索词分词,再与目标查询字段进行匹配,若分词中的任意一个词与目标字段匹配上,则可查询到.   termQuery:不会对搜索词进行分词处理,而是作为一个整体与目标字段进行匹配 ...

  7. C# HTTP系列9 GET与POST示例

    系列目录     [已更新最新开发文章,点击查看详细] 学习本篇之前,对 HttpWebRequest 与 HttpWebResponse 不太熟悉的同学,请先学习<C# HTTP系列>. ...

  8. [Powershell]导出指定的定时计划任务

    <# .NOTES =========================================================================== Created wit ...

  9. 安卓 apk 嵌入H5页面只显示部分

    安卓 apk 嵌入H5页面只显示部分(有空白页出现) 解决方案 没有加载的是js部分,需要在安卓那边加上一串代码 webView.getSetting().setDomStorageEnabled(t ...

  10. RGB灯

    robotbit扩展板4个rgb灯,r-红,g-绿,b-蓝,值为0~255,可模拟出256*256*256种颜色. from microbit import * import neopixel r = ...