位置: 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应用项目)

  • 怎样轻松运营本地资讯网站(怎么调出运营)

    怎样轻松运营本地资讯网站(怎么调出运营)

  • objectmapper.readvalue方法(objectmapper.readvalue方法不安全)

    objectmapper.readvalue方法(objectmapper.readvalue方法不安全)

  • 电脑连接打印机找不到打印机型号怎么办(电脑连接打印机步骤图)

    电脑连接打印机找不到打印机型号怎么办(电脑连接打印机步骤图)

  • 三星f907n是什么型号(三星f907n是韩版还是国行)

    三星f907n是什么型号(三星f907n是韩版还是国行)

  • 小红书上视频怎么保存下来(小红书上视频怎么做的)

    小红书上视频怎么保存下来(小红书上视频怎么做的)

  • 微信怎么传输大视频(微信怎么传输大文件视频)

    微信怎么传输大视频(微信怎么传输大文件视频)

  • 腾讯一个蛋的图标是啥(腾讯的蛋叫什么)

    腾讯一个蛋的图标是啥(腾讯的蛋叫什么)

  • 华为nova7与nova7se区别(华为nova7与nova7se与nova 7 pro对比参数)

    华为nova7与nova7se区别(华为nova7与nova7se与nova 7 pro对比参数)

  • 魅族17与17pro区别(魅族17pro和17区别)

    魅族17与17pro区别(魅族17pro和17区别)

  • 手机关不了机屏幕失灵怎么办(手机关不了机屏幕显示字母怎么回事)

    手机关不了机屏幕失灵怎么办(手机关不了机屏幕显示字母怎么回事)

  • z68主板支持什么cpu(z68主板支持什么针脚)

    z68主板支持什么cpu(z68主板支持什么针脚)

  • 华为手机流量限速怎么解除(华为手机流量限制了怎么办)

    华为手机流量限速怎么解除(华为手机流量限制了怎么办)

  • ipadair2是什么处理器(ipad air2是)

    ipadair2是什么处理器(ipad air2是)

  • ipad现在是第几代了(ipad现在是第几代了2022)

    ipad现在是第几代了(ipad现在是第几代了2022)

  • 小米8sn码几位数(小米8串码)

    小米8sn码几位数(小米8串码)

  • i3 7100配什么主板(i3 7100配什么主板用几代内存)

    i3 7100配什么主板(i3 7100配什么主板用几代内存)

  • 抖音删了怎么恢复手机(抖音删了怎么恢复找回来)

    抖音删了怎么恢复手机(抖音删了怎么恢复找回来)

  • 手机上的计算器找不到了怎么办(手机上的计算器怎么找回)

    手机上的计算器找不到了怎么办(手机上的计算器怎么找回)

  • 百意推广是什么(百意推广是什么公司)

    百意推广是什么(百意推广是什么公司)

  • 怎样关闭远程管理(怎么关闭远程权限)

    怎样关闭远程管理(怎么关闭远程权限)

  • 滴滴车主如何解绑(滴滴车主如何解绑推荐人信息)

    滴滴车主如何解绑(滴滴车主如何解绑推荐人信息)

  • orm框架有哪些(orm框架的原理是什么)

    orm框架有哪些(orm框架的原理是什么)

  • 升级声卡驱动后麦克风不能用没声音怎么办?(升级声卡驱动后声音禁用了怎么恢复)

    升级声卡驱动后麦克风不能用没声音怎么办?(升级声卡驱动后声音禁用了怎么恢复)

  • 默认网关不可用老掉线解决方法(默认网关不可用的解决办法)

    默认网关不可用老掉线解决方法(默认网关不可用的解决办法)

  • 斯诺多尼亚国家公园多尔威泽兰城堡,英国威尔士康威 (© Sebastian Wasek/Sime/eStock Photo)(斯诺多尼亚山)

    斯诺多尼亚国家公园多尔威泽兰城堡,英国威尔士康威 (© Sebastian Wasek/Sime/eStock Photo)(斯诺多尼亚山)

  • JavaScript之Ajax-axios表单提交

    JavaScript之Ajax-axios表单提交

  • 纳税额是指
  • 增值税抵扣了,附加税怎么算
  • 企业所得税季末数怎么填
  • 预收账款属于什么科目借贷方向
  • 税控盘维护费280多久可以抵扣
  • 支付给个人的佣金费用需要发票吗
  • 一般纳税人主表第一栏数据
  • 非盈利组织是两套账吗?
  • 机器设备折旧费用属于间接生产费用
  • 服务业收到服务业发票分录
  • 当月开的发票次月预缴税款行得通吗?
  • 车间不生产时折旧怎么算
  • 销售单位收入和支出要怎么做账?
  • 企业收到供货单位提供的材料,如其价款大于
  • 企业个人完税证明怎么开
  • 企业办税人员收入怎么算
  • 销售种子的税种有哪些税率为多少?
  • 景区门票入什么费用
  • 增值税税负率计算器
  • 非高新企业研发费用加计扣除的条件
  • 增值税普通发票几个点
  • 分期收款计提销项税怎么算
  • 应付职工薪酬借方负数是什么意思
  • 小规模纳税人的专票可以抵税吗
  • 上市公司的组织形式
  • windows server 2003 r2 序列号
  • 王者荣耀中雅典娜的战争女神多少钱
  • 浅谈使用链式管理加强特殊监管场所
  • avgorange是什么文件夹可以删除吗
  • 苹果电脑优酷视频打不开
  • 专有技术应当得到
  • 银行汇票和银行本票区别图解
  • Dardanup郡的小矮人村,澳大利亚 (© Amanda Hughes/Alamy)
  • 增值税专用发票的税率是多少啊
  • php调用其他php函数
  • 一键部署web应用
  • 银行存款转定期申请
  • 图片美白ps
  • 31.JavaScript数组进阶,一网打尽数组操作函数slice、filter、map、reduce、some、every、find、splice
  • 一次性伤残就业补助金
  • 成本不够用怎么办baixing
  • js array()
  • java基础介绍
  • 帝国cms8.0
  • 数据库触发器db2什么意思
  • 用vue做的企业项目
  • 入库时的会计分录
  • 软件企业研发费用
  • 善意取得虚开增值税专用发票处理
  • 发票加上税额之后怎么还多了呢
  • 企业取得的财政补贴是否缴纳增值税
  • 基本户收到零余额转款怎么做分录
  • 增值税进项发票抵扣期限是多少天?
  • 业务招待费属于管理费用吗
  • 小规模纳税人预交增值税率
  • 金蝶k3怎么打印科目余额表
  • 企业的固定资产由于技术进步等原因
  • 建账时应考虑的问题包括下列哪三项
  • win8系统没有无线网络连接
  • 苹果mac安装win7系统
  • freebsd12安装图形界面
  • 宏基笔记本一键恢复系统
  • 金山卫士电脑版
  • win8系统启动不了如何修复
  • Ubuntu GNOME 14.10的桌面升级到GNOME 3.16教程
  • opengl教程48讲
  • cocos2d教程
  • 3366小游戏小
  • 链接的链
  • Unity3D游戏开发标准教程
  • jq点击图片让图片进行切换
  • 安卓键盘软件
  • 如何使用form表单
  • js入门基础教程
  • 鼠标瞬间移动
  • python djang
  • 运输公司抵扣
  • 发票缴销办理流程图
  • 出口退税需要哪些单据
  • 工会经费支出审批制度
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设