位置: IT常识 - 正文

elementUI中的el-table表头和内容全部一行显示完整(elementui中的el-tab-pane为什么内容会为0)

编辑:rootadmin
elementUI中的el-table表头和内容全部一行显示完整

推荐整理分享elementUI中的el-table表头和内容全部一行显示完整(elementui中的el-tab-pane为什么内容会为0),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:elementui tab,elementUI中的标签页怎么额外添加文字,elementui中的el-tab-pane为什么内容会为0,element tab,elementUI中的input如何设置文本框的高度,elementUI中的表格中的多选框,elementui中的el-tab-pane为什么内容会为0,elementui中的el-tab-pane为什么内容会为0,内容如对您有帮助,希望把文章链接给更多的朋友!

项目上有一个需求,需要用el-table来显示数据,有一个要求就是不能换行。表头不能换行,表格里面的内容也不能换行。

同事写的页面使用的是vue3,自定义了一个事件来动态变化每一列的参数。我将其挪用到vue2中完全没法使用。只能在网上查找资料来实现它。

表格通过接口来获取,接口中将表头标题和表格内容分开来的。

基本思路就是:表格内容限制不换行,不使用缩略符号。

elementUI中的el-table表头和内容全部一行显示完整(elementui中的el-tab-pane为什么内容会为0)

首先从表头开始,在el-table-column中有一个render-header

// 表头部重新渲染renderHeader(h, { column, $index }) {// 新建一个 spanlet span = document.createElement('span');// 设置表头名称span.innerText = column.label;// 临时插入 documentdocument.body.appendChild(span);// 重点:获取 span 最小宽度,设置当前列,注意这里加了 20,字段较多时还是有挤压,且渲染后的 div 内左右 padding 都是 10,所以 +20 。(可能还有边距/边框等值,需要根据实际情况加上)column.minWidth = (span.getBoundingClientRect().width) + 40; this.headerLableWidth[column.property] = column.minWidth;// 移除 document 中临时的 spandocument.body.removeChild(span);return h('span', column.label);},

column中有这些标题文字信息, 创建一个span标签,添加到文档流中,然后拿到它的宽度,为了多加点宽度,可以额外多加些数值。代码中多加了40宽度。为表头设置最小宽度。

记录这一列的最小宽度,当表格内容动态设置宽度的时候,至少要给定成表头的宽度。不然表头会因为没有内容宽度变成0.

flexColumnWidth(str, arr1, flag = 'max'){ // str为该列的字段名(传字符串);tableData为该表格的数据源(传变量); // flag为可选值,可不传该参数,传参时可选'max'或'equal',默认为'max' // flag为'max'则设置列宽适配该列中最长的内容,flag为'equal'则设置列宽适配该列中第一行内容的长度。 str = str + '' let columnContent = '' if (!arr1 || !arr1.length || arr1.length === 0 || arr1 === undefined) { return } if (!str || !str.length || str.length === 0 || str === undefined) { return } if (flag === 'equal') { // 获取该列中第一个不为空的数据(内容) for (let i = 0; i < arr1.length; i++) { if (arr1[i][str].length > 0) { // console.log('该列数据[0]:', arr1[0][str]) columnContent = arr1[i][str] break } } } else { // 获取该列中最长的数据(内容) let index = 0 for (let i = 0; i < arr1.length; i++) { if (arr1[i][str] === null) { return } const now_temp = arr1[i][str] + '' const max_temp = arr1[index][str] + '' if (now_temp.length > max_temp.length) { index = i } } columnContent = arr1[index][str] } // console.log('该列数据[i]:', columnContent) // 以下分配的单位长度可根据实际需求进行调整 let flexWidth = 0 for (const char of String(columnContent)) { if ((char >= 'A' && char <= 'Z') || (char >= 'a' && char <= 'z')) { // 如果是英文字符,为字符分配8个单位宽度 flexWidth += 10 } else if (char >= '\u4e00' && char <= '\u9fa5') { // 如果是中文字符,为字符分配15个单位宽度 flexWidth += 18 } else { // 其他种类字符,为字符分配8个单位宽度 flexWidth += 10 } } if (flexWidth < this.headerLableWidth[str]) { // 设置最小宽度 flexWidth = this.headerLableWidth[str] } // if (flexWidth > 250) { // // 设置最大宽度 // flexWidth = 250 // } // console.log(flexWidth) return flexWidth + 'px' } }

el-table-column标签中的width使用函数方法来代替。

完整的el-table如下

<el-table :ref='tableRef' :data="certRecordInfos" border :fit="true" style="width: 100%"> <el-table-column align="center" :render-header="renderHeader" :width="flexColumnWidth(item.key,certRecordInfos)" :key="item.key" :prop="item.key" :label="item.value" > </el-table-column> </el-table>

因为需要先获取到表头的最小宽度,因此需要先加载表头,才能确保后面加载表格内容的时候,能正确的设置宽度。

在watch中,观察这两个数组,当发现变化的时候,去重新刷新这个table

certHeaderList: { deep: true, handler: function (val) { this.$nextTick(() => { this.$refs[`${this.tableRef}`].doLayout(); }) } }, certRecordInfos: { deep: true, handler: function (val) { this.$nextTick(() => { this.$refs[this.tableRef].doLayout(); }) } } this.certHeaderList.splice(0) this.certRecordInfos.splice(0) const resultHeader = val[0].header resultHeader.forEach((header)=>{ let map = {key:header.columnName,value:header.columnDesc}; this.certHeaderList.push(map); }); setTimeout(() => { const resultList = val[0].list this.certRecordInfos.push(...resultList) }, 1000);

要实现效果,必须要确保已经拿到了表格每一列表头的最小宽度。并使用headerLableWidth记录下来。

另外,需要为表格内容进行设置,确保内容不会进行换行和使用缩略符号。

/deep/ .el-table th, .el-table td { white-space: nowrap;}/deep/ .el-table .cell { display: inline-block; white-space: nowrap; width: auto; overflow: auto;}/deep/ .el-table .el-table__body-wrapper { overflow-x: auto;}
本文链接地址:https://www.jiuchutong.com/zhishi/288009.html 转载请保留说明!

上一篇:最新接口的固态硬盘是什么(固态硬盘最新接口)

下一篇:vite 运行项目报错 ‘axios/index.js‘ does not provide anexport named ‘default‘(vi应用项目)

  • 腾讯课堂麦克风在哪里设置(腾讯课堂麦克风权限设置)

    腾讯课堂麦克风在哪里设置(腾讯课堂麦克风权限设置)

  • 华为手机屏坏后如何强制关机(华为手机屏坏后如何强制关机 - 天气预报)

    华为手机屏坏后如何强制关机(华为手机屏坏后如何强制关机 - 天气预报)

  • 电脑怎么把三个文件放在一个压缩包(电脑怎么把三个盘合成一个盘)

    电脑怎么把三个文件放在一个压缩包(电脑怎么把三个盘合成一个盘)

  • 华为畅享手机如何截长图并下拉(华为畅享手机如何添加桌面天气及时间)

    华为畅享手机如何截长图并下拉(华为畅享手机如何添加桌面天气及时间)

  • 苹果ios13为什么网络不稳定(苹果13为什么越来越便宜)

    苹果ios13为什么网络不稳定(苹果13为什么越来越便宜)

  • 笔记本开机除电源灯全无反应(笔记本去掉电池直接用电源开不了机)

    笔记本开机除电源灯全无反应(笔记本去掉电池直接用电源开不了机)

  • qq历史头像怎么批量删除(QQ历史头像怎么恢复不了)

    qq历史头像怎么批量删除(QQ历史头像怎么恢复不了)

  • 拼多多免拼单怎么操作(拼多多免拼单怎么取消订单)

    拼多多免拼单怎么操作(拼多多免拼单怎么取消订单)

  • 红米k20pro充电突然变慢(红米k20pro充电一闪一闪的是什么原因)

    红米k20pro充电突然变慢(红米k20pro充电一闪一闪的是什么原因)

  • 苹果手机夜览模式护眼吗(苹果手机夜览模式明天前手动启用什么意思)

    苹果手机夜览模式护眼吗(苹果手机夜览模式明天前手动启用什么意思)

  • 微信咖啡表情什么意思(微信咖啡表情符号)

    微信咖啡表情什么意思(微信咖啡表情符号)

  • m2固态硬盘缓存有什么用(m2固态硬盘缓存512)

    m2固态硬盘缓存有什么用(m2固态硬盘缓存512)

  • 苹果店换屏是原装吗(苹果换屏原装屏拿走)

    苹果店换屏是原装吗(苹果换屏原装屏拿走)

  • 剪映怎么调整视频顺序(剪映怎么调整视频秒数)

    剪映怎么调整视频顺序(剪映怎么调整视频秒数)

  • 苹果小花机是什么意思(iphone小花机是啥)

    苹果小花机是什么意思(iphone小花机是啥)

  • 键盘pagedown键在哪(pagedown属于哪个键区)

    键盘pagedown键在哪(pagedown属于哪个键区)

  • 主板hdd led插哪(主板上hdd led表示的意思是)

    主板hdd led插哪(主板上hdd led表示的意思是)

  • qq会员铭牌怎么更换(qq会员铭牌怎么隐藏)

    qq会员铭牌怎么更换(qq会员铭牌怎么隐藏)

  • 4g在线说明不在家吗(4g在线是在线还是不在线)

    4g在线说明不在家吗(4g在线是在线还是不在线)

  • 小米蓝牙耳机支持快充吗(小米蓝牙耳机支持鸿蒙系统吗)

    小米蓝牙耳机支持快充吗(小米蓝牙耳机支持鸿蒙系统吗)

  • 荣耀20pro有耳机孔吗(华为荣耀20pro耳机插孔在什么地方)

    荣耀20pro有耳机孔吗(华为荣耀20pro耳机插孔在什么地方)

  • ipad教育优惠怎么弄(教育优惠买ipad怎么弄)

    ipad教育优惠怎么弄(教育优惠买ipad怎么弄)

  • 有了番号怎么用迅雷下载(有了番号怎么用微信登录)

    有了番号怎么用迅雷下载(有了番号怎么用微信登录)

  • iPhone怎么充电更快 iPhone手机快速充电方法(苹果怎么充电更好)

    iPhone怎么充电更快 iPhone手机快速充电方法(苹果怎么充电更好)

  • 使用 iframe出现了缓存,导致页面不会刷新的解决方案(iframe frame)

    使用 iframe出现了缓存,导致页面不会刷新的解决方案(iframe frame)

  • 年度减免税限额
  • 税率3%的增值税专用发票
  • 款项已付发票未到,怎么做凭证
  • 存款利息单需要缴纳个人所得税吗
  • 资产负债表预收预付账款怎么填
  • 现金比率计算公式含义
  • 会计中应收账款的英文
  • 退货的发票还能查询到么
  • 存货的坏账准备转回吗
  • 三证合一后还要去税务局吗
  • 代收款项属于收入范围吗
  • 非公司员工可以交社保吗
  • 用工和用人单位
  • 跨年度的费用发票做错了怎么办
  • 股东折价入股会计分录
  • 事业单位转账支票管理
  • 公司自己的食堂需要办理食品经营许可证吗
  • 企业筹建期间可以自己发农民工工资么
  • 小规模纳税人如何交增值税
  • 技术咨询增值税税率
  • 王者荣耀怎么快速获得金币
  • 主板bios在线升级
  • 开户银行对公司有影响吗
  • 误餐费怎么入账
  • windows太阳谷更新
  • 联想win10自动修复失败还能保存文件吗
  • 住房公积金怎么补缴费
  • thinkphp5 分页
  • 知识产权作用
  • 免征的增值税账务处理
  • 购买房地产和买房一样吗
  • 利润增减幅度
  • 应收账款确认无法收回
  • YOLOv5网络结构组成
  • 用python绘制
  • html常用标签有哪些
  • html5+css3web前端设计基础教程
  • 出口没有增值税发票需要交税吗
  • 归属于母公司所有者权益合计
  • 增值税发票跨月红冲操作流程
  • 增值税专用发票丢了怎么补救
  • 实收资本变化
  • 两处取得工资薪金如何申报
  • 企业筹办期怎么做账最合理
  • 所得税申报表里季初资产是指什么
  • 一般纳税人季报怎么填
  • 项目清算后未售房产怎么纳税
  • 新成立的公司如何注销
  • 怎么算股本溢价
  • 广告费应归于什么费用
  • 公司聘请专家工资怎么算
  • 工程施工怎么结转,用友自动结转吗
  • 固定资产能直接计入费用吗为什么
  • 代收水电费如何入账
  • 专票先不认证如何申报增值税
  • 库存结转成本如何计算
  • 应收票据和应付票据可以对冲吗
  • 累计扣税标准2021标准
  • 建设工程施工管理
  • 年终奖和工资一起发吗
  • 企业利润怎么算出来的
  • 企业预付账款是什么意思
  • mysqldump命令在哪里执行
  • centos设置开机启动项
  • win10 1607更新失败
  • ubuntu系统如何设置永不休眠
  • Ubuntu系统怎么设置IP
  • mac上的
  • 如何使用朋友的山姆卡
  • win7系统突然打印不了
  • linux的命令行怎么打开
  • android textview设置字体
  • unity4.x升级到unity5.x材质丢失
  • python 压缩gz
  • 请问在javascript程序中
  • unity ngui
  • jquery分页插件的使用
  • python字符有哪些
  • 广东地税电话客服电话
  • 浙江省焊工操作证查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设