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

  • iqoo8是双扬声器吗(iqoo8双扬声器参数)

    iqoo8是双扬声器吗(iqoo8双扬声器参数)

  • 微信只发文字怎么发(微信只发文字怎么发朋友圈苹果手机)

    微信只发文字怎么发(微信只发文字怎么发朋友圈苹果手机)

  • 华为b2手环怎么连接手机(华为b2手环怎么连接oppo手机)

    华为b2手环怎么连接手机(华为b2手环怎么连接oppo手机)

  • 快手怎么开通快手小店(快手怎么开通快手小黄车)

    快手怎么开通快手小店(快手怎么开通快手小黄车)

  • iphone如何分享wifi密码(iphone如何分享wifi密码给电脑)

    iphone如何分享wifi密码(iphone如何分享wifi密码给电脑)

  • 苹果11pro max参数

    苹果11pro max参数

  • 荣耀30s是支持屏幕指纹吗(荣耀30s是几k屏)

    荣耀30s是支持屏幕指纹吗(荣耀30s是几k屏)

  • 苹果手机指南针怎么校准(苹果手机指南针海拔怎么不显示)

    苹果手机指南针怎么校准(苹果手机指南针海拔怎么不显示)

  • are-al00什么型号(areal00什么型号)

    are-al00什么型号(areal00什么型号)

  • 微信mull什么意思(微信nmm是什么意思)

    微信mull什么意思(微信nmm是什么意思)

  • 华为手机怎么把号码存到sim卡(华为手机怎么把试卷答案去掉)

    华为手机怎么把号码存到sim卡(华为手机怎么把试卷答案去掉)

  • 苹果x可以更新13.5.1系统吗(苹果x可以更新13.3系统吗)

    苹果x可以更新13.5.1系统吗(苹果x可以更新13.3系统吗)

  • vivooppo步步高什么关系(步步高叫什么手机)

    vivooppo步步高什么关系(步步高叫什么手机)

  • iphone视角缩放什么意思(iphone视角缩放开了没反应)

    iphone视角缩放什么意思(iphone视角缩放开了没反应)

  • 苹果手机怎么设置密码锁屏(苹果手机怎么设置门禁卡NFC)

    苹果手机怎么设置密码锁屏(苹果手机怎么设置门禁卡NFC)

  • 把通讯录导到新手机上(通讯录怎么拷贝到新手机)

    把通讯录导到新手机上(通讯录怎么拷贝到新手机)

  • 手机格式化会怎么样(手机格式化怎么保留微信上的数据)

    手机格式化会怎么样(手机格式化怎么保留微信上的数据)

  • 手机怎么样上传照片(手机怎么样上传视屏能不压缩)

    手机怎么样上传照片(手机怎么样上传视屏能不压缩)

  • wps版怎么删除空白页(wps怎么删除空白页)

    wps版怎么删除空白页(wps怎么删除空白页)

  • 京东的确认收货是干嘛的(京东的确认收货时间)

    京东的确认收货是干嘛的(京东的确认收货时间)

  • qq怎么邀请新人注册(qq怎么邀请新人进群聊)

    qq怎么邀请新人注册(qq怎么邀请新人进群聊)

  • word如何邮件合并(word如何邮件合并图片)

    word如何邮件合并(word如何邮件合并图片)

  • gpu驱动是什么(gpu驱动最新更新下载)

    gpu驱动是什么(gpu驱动最新更新下载)

  • 电话通讯录怎么恢复(电话通讯录怎么删除)

    电话通讯录怎么恢复(电话通讯录怎么删除)

  • 苹果Mac OS X系统快速显示/恢复隐藏文件的方法介绍(苹果macbook 系统)

    苹果Mac OS X系统快速显示/恢复隐藏文件的方法介绍(苹果macbook 系统)

  • React避免组件重复渲染(react避免子组件更新)

    React避免组件重复渲染(react避免子组件更新)

  • 小规模忘了报税怎么办
  • 企业资产损失税前扣除管理办法2011215号第46条
  • 附加税的计算公式2023
  • 无需外汇局审批的账户
  • 赞助支出和广告支出的区别
  • 机械租赁带司机税目
  • 纳税总额是否包含增值税进项
  • 上缴财政收入怎么做账
  • 公司购买汽车抵税规则
  • 在建工程全部费用化
  • 一般纳税人认定书
  • 小区业主委员会归哪个部门管
  • 超额用电罚款应由谁缴纳
  • 预估成本费用会计科目
  • 公司转账不开票备注服务费怎么入账
  • 一般进口货物的完税价格
  • 不开票的收入怎么避税
  • 收到个税返还手续费怎么开发票
  • mac如何强制退出全屏
  • php 数组对象
  • 固定资产增值税税率
  • linux的用法
  • 低值易耗品的管理和流程ppt
  • macos10.15.7补充更新
  • 辅导期一般纳税人标准
  • 非货币性资产对外捐赠企业所得税处理
  • 酒店会计科目及账务处理视频
  • 年终双薪是底薪吗
  • php随机抽取
  • 专项基金设立
  • 确认应付职工薪酬如何计算
  • discuz怎么修改招聘内容
  • 增值税 转出
  • java transactional
  • 处置子公司利润表怎么处理
  • 用友t3财务报表导出
  • 发票税额打印不全可以入账吗
  • 文化事业建设费的征收范围
  • php手机验证码验证
  • 最常用的成本核算表格
  • 应收货款计入什么科目
  • python字典的特点和用处
  • 固定资产报废的请示
  • 注册资金印花税税率是多少,怎么计算?
  • 民间非营利组织会计制度
  • 累计预扣法利弊
  • 印花税的计算公式与计算注意事项
  • 存货价值的计算公式
  • 免税饲料做为免税吗
  • 应付账款抹零摘要怎么写
  • 汽车销售行业印章要求
  • 会计做账的原始凭证有哪些
  • 企业发生坏账损失时,在当期确认坏账损失
  • 加计抵减10%政策适用范围
  • 差旅津贴和差旅补贴需要申报个税吗?
  • ubuntu安装软件教程
  • 电脑开机显示xp后无反应
  • ubuntu恢复rm –rf删除的文件
  • linux服务器怎么连接wifi
  • mac怎么添加桌面
  • centos直接进入命令行
  • windows默认程序设置
  • win7系统出现问题怎么修复
  • Win10怎么更换主题
  • 微信小程序自动跳转怎么关闭
  • 适配器模型
  • 关闭默认共享和共享文件夹
  • 微信小程序表单制作代码
  • cocos-2dx
  • tiles框架
  • javascript入门教学
  • bootstrap轮播效果
  • 广东电子税务局官网登录入口
  • 水利建设基金的计提与会计处理
  • 企业所得税法中所称有关的支出是指
  • 辛嵨静志
  • 晋中税务局领导班子简历
  • 新疆房车自驾营地
  • 两会热点有哪些呀?
  • 收到假发票,被公司辞退
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设