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

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

那么怎么让表格整体看起来自然协调一些呢,老大要求表格的单元格宽度根据内容动态计算,最大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. 唐敬博-201871010118 《面向对象程序设计(java)》第六、七周学习总结

    在博客园撰写博客(随笔),总结6-7周学习内容(包括实验内容),作业格式要求如下: 博文名称:学号-姓名<面向对象程序设计(java)>第四周学习总结(1分) 博文正文开头格式:(2分) ...

  2. 201871010121-王方-《面向对象(java)程序设计对象》第十周学习总结

    王方第九周Java实验总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.co ...

  3. LG2578 「ZJOI2005」九数码游戏 bfs

    问题描述 LG2578 题解 用string+map去重. bfs即可. \(\mathrm{Code}\) #include<bits/stdc++.h> using namespace ...

  4. Python进阶-VII 内置函数

    一.内置函数引入 我们已经了解的有; print()  input() range() next()  dir() str() int() list() set() tuple() dict() he ...

  5. c#中几种数据结构

    数组型: Array:内存连续分配,长度不可变,可索引访问. ArrayList:早期版本使用,非泛型,类型不安全,如果元素数据类型不同可考虑使用. List<>:泛型,可变长度,内存连续 ...

  6. MySQL实战45讲学习笔记:第十讲

    一 .本节内容概要 前面我们介绍过索引,你已经知道了在 MySQL 中一张表其实是可以支持多个索引的.但是,你写 SQL 语句的时候,并没有主动指定使用哪个索引.也就是说,使用哪个索引是由MySQL ...

  7. Debug 路漫漫-10:AttributeError: 'Embedding' object has no attribute 'get_shape'

    CNN的Embedding层报错: 报错:AttributeError: 'Embedding' object has no attribute 'get_shape' 查了下是这个问题: https ...

  8. nginx服务器图片防盗链的方法

    nginx服务器图片防盗链的方法<pre> location ~* \.(gif|jpg|png|jpeg)$ { expires 30d; valid_referers *.shuche ...

  9. SQLServer --------- 设置主键自增长

    设置主键自增长的两种方式 1.通过图形化的的操作方法进行设置 新建的时候进行设置 第二种是右击设计对已经建好的表进行设置  设置主键  设置自增长 标识增量标识每次自增加多少 标识种子标识从多少开始自 ...

  10. springboot 获取到的inputStream为空的问题

    springboot在接收http请求的时候读取的request的inputStream,造成我们想自己读取inputStream的时候发现inputStream已经无法读取了. 为了读取inputS ...