位置: IT常识 - 正文

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

发布时间:2024-01-06
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应用项目)

  • 为什么在钉钉群里找不到修改昵称(为什么在钉钉群里看不到自己的签到)

    为什么在钉钉群里找不到修改昵称(为什么在钉钉群里看不到自己的签到)

  • 美团支付宝付款的操作方法(美团支付宝付款显示当前无法支付怎么回事)

    美团支付宝付款的操作方法(美团支付宝付款显示当前无法支付怎么回事)

  • 华为荣耀8a是安卓手机吗(荣耀8是安卓吗)

    华为荣耀8a是安卓手机吗(荣耀8是安卓吗)

  • 探探想聊天必须充钱吗(探探想聊天必须实名吗)

    探探想聊天必须充钱吗(探探想聊天必须实名吗)

  • 苹果8快充买18w还是29w(iphone8p 18w快充)

    苹果8快充买18w还是29w(iphone8p 18w快充)

  • c头文件有哪些(c/c 常用头文件及其函数汇总(持续更新))

    c头文件有哪些(c/c 常用头文件及其函数汇总(持续更新))

  • 苹果11外屏碎了怎么换(苹果11外屏碎了一点不影响使用)

    苹果11外屏碎了怎么换(苹果11外屏碎了一点不影响使用)

  • 酷狗认领版权什么意思(酷狗音乐怎么认领版权)

    酷狗认领版权什么意思(酷狗音乐怎么认领版权)

  • 手机屏幕自己可以换吗(手机屏幕自己可以修吗)

    手机屏幕自己可以换吗(手机屏幕自己可以修吗)

  • qq管理员有什么用(qq管理员有什么权限)

    qq管理员有什么用(qq管理员有什么权限)

  • mate30pro支持双5g吗(mate30pro支持双wifi吗)

    mate30pro支持双5g吗(mate30pro支持双wifi吗)

  • 微信为什么会自动掉线(微信为什么会自动关闭)

    微信为什么会自动掉线(微信为什么会自动关闭)

  • vivo如何进入开发模式(vivo如何进入开发者模式)

    vivo如何进入开发模式(vivo如何进入开发者模式)

  • qq音乐怎么下载到u盘里(qq音乐怎么下载歌曲到手机文件)

    qq音乐怎么下载到u盘里(qq音乐怎么下载歌曲到手机文件)

  • ios应用与数据在哪(ipone应用与数据)

    ios应用与数据在哪(ipone应用与数据)

  • 数据的存储结构包括哪四种(数据的存储结构分为哪两类)

    数据的存储结构包括哪四种(数据的存储结构分为哪两类)

  •  memok开关是干什么的(memok按钮应该打开还是关闭)

    memok开关是干什么的(memok按钮应该打开还是关闭)

  • 苹果8前置怎么取消镜像(苹果8前置怎么拍照好看)

    苹果8前置怎么取消镜像(苹果8前置怎么拍照好看)

  • 三层交换机路由器区别(三层交换机路由表怎么看)

    三层交换机路由器区别(三层交换机路由表怎么看)

  • win10如何自定义浏览器 win10系统设置默认浏览器方法(win10如何自定义鼠标指针)

    win10如何自定义浏览器 win10系统设置默认浏览器方法(win10如何自定义鼠标指针)

  • 学会在Vue项目中插入高德地图JS API与地图的相关设置,看这一篇就够了~(保姆级精简教学)(vue项目中技巧知识点)

    学会在Vue项目中插入高德地图JS API与地图的相关设置,看这一篇就够了~(保姆级精简教学)(vue项目中技巧知识点)

  • 苹果系统专用网络优化工具,让你的网络速度暴增(一个人失恋了该怎么安慰她)

    苹果系统专用网络优化工具,让你的网络速度暴增(一个人失恋了该怎么安慰她)

  • 预缴增值税计算公式方法
  • 控股子公司增资扩股
  • 上月未记账本月可以记账吗
  • 委托开发费用免所得税和增值税
  • 直系亲属之间转账要交税吗
  • 销售固定资产可以开专票吗
  • 劳务税在地税局开还是国税局
  • 资本公积转增资本的条件
  • 3%小规模纳税人开出的发票 农产品成本如何计算
  • 现金支票怎么背书转让
  • 工会经费怎么做账务处理
  • 抽奖获得的奖品有权转卖吗
  • 企业的其他业务收入有
  • 验资报告办理一般需要多久时间
  • 0元收购股份
  • mac终端更新系统
  • ppt文件打不开了怎么办
  • 前端获取当前地址
  • 笔记本如何刷新bios
  • imac夜间模式
  • 如何通过路由器查看宽带账号密码
  • 融资租赁ppt
  • PHP:pg_affected_rows()的用法_PostgreSQL函数
  • 所得税贷款利息扣除
  • 我整理的邪恶铭刻所有卡牌及自制卡
  • php image
  • 在一株植物上行走的作文
  • 股权转让撤回投资
  • 增值税及附加税是什么意思
  • web攻防之业务安全实战指南
  • php登录注册
  • php模板引擎执行时间
  • golang、python、php、c++、c、java、Nodejs性能对比
  • 未发货先开票后付款是否违法
  • php -v
  • 运输中合理损耗计入存货成本吗
  • 微信小程序获取手机号失败
  • 最新预提房租会计分录
  • 报废机器设备如何缴纳增值税
  • 汇算清缴退税的账务处理
  • php视频加水印
  • index.php备份文件
  • mysql5.6允许远程连接
  • 没有以前年度损益调整怎么办
  • 财务报表信息的分类
  • 其他人员讲课费会计分录
  • 模板的固定
  • 没有以前年度损益科目应该加在什么地方
  • 已经确认收入的商品发生销售折让
  • 收到预付卡的发票是否可以报销呢?
  • 货运代理的公司
  • 支付商业承兑汇票怎么做
  • 股东借款转为实收资本的说明
  • 用盈余公积弥补亏损的会计分录是
  • 企业购入投资性房地产
  • 没有销售收入可以有销售费用吗
  • linux系统安装yum
  • 容器内存限制
  • win10怎么用键盘重启
  • centos必学的60个命令
  • pkjobs.exe - pkjobs是什么进程 有什么用
  • win7旗舰版系统激活密钥
  • 电脑迅雷影音在哪个文件夹
  • js实现无缝轮播
  • javascript数据结构与算法第三版
  • ubuntu 编译ffmpeg
  • python上传文件到网站
  • vue 分页 实现
  • js自动切换图片效果
  • Javascript removeChild()删除节点及删除子节点的方法
  • delphi7教程
  • jquery插件大全
  • centos python2.7升级到3.7
  • 保险的佣金一般是多少
  • 百旺金赋天津客服电话
  • 2024年深圳房价
  • 怎么使用企业级app
  • 电子税务局怎么删除办税员
  • 西安税务总局
  • 宁夏地税局电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号