ElementUI中实现el-table表格列宽自适应,列根据内容自动撑满,内容不换行

news/2024/9/29 14:48:21

一、概述

在表格宽度固定时,实现内容不换行,表格自动显示滚动条

当前显示效果:

 期望实现效果:

 二、实现思路

遍历表格数组,每次都构建一个隐藏的span元素,获取该元素的宽度,对比保存最大值

代码如下:

 

```typescript /*** 表格列宽自适应* @param prop 属性* @param records 数据* @param minWidth 最小宽度*/ const getColumnWidth = (prop: string, records: any, minWidth = 80) => {const padding = 12; // 列内边距
const contentWidths = records.map((item: any) => {const value = item[prop] ? String(item[prop]) : "";const textWidth = getTextWidth(value);return textWidth + padding;
});const maxWidth = Math.max(...contentWidths);
return Math.max(minWidth, maxWidth);

}
/**

  • el-table扩展工具 -- 列宽度自适应 - 获取列宽内文本宽度
  • @param {*} text 文本内容
  • @returns 文本宽度(int)
    */
    const getTextWidth = (text: any) => {
    const span = document.createElement("span");
    span.style.visibility = "hidden";
    span.style.position = "absolute";
    span.style.top = "-9999px";
    span.style.whiteSpace = "nowrap";
    span.style.fontSize = "16px";
    span.innerText = text;
    document.body.appendChild(span);
    const width = span.offsetWidth + 16;
    document.body.removeChild(span);
    return width;
    }

<h1>三、总结</h1>
<p>其实是比较dirty的实现方式,性能不算很好,但胜在简单好用。另外还可以全局注入该方法。</p>
<p>网上也有比较专业的组件库解决这一问题:</p>
<code>af-table-column:</code>
<p class="notranslate"><code></code>https://github.com/legendJaden/AFTableColumn</p>
<p>基于&nbsp;<code>element-ui</code>&nbsp;组件库的&nbsp;<code>el-table-column</code>&nbsp;组件, 支持自适应列宽功能</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/66175.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

PbootCMS模板如何调用友情链接

在PbootCMS中,使用友情链接标签可以方便地输出指定分组的友情链接。下面是一个详细的示例,展示了如何使用该标签以及如何控制输出的内容。 友情链接标签示例 1. 基本用法{pboot:link num=3 gid=1}<a href="[link:link]" target="_blank">[link:nam…

getBeansOfType源码解析

org.springframework.beans及org.springframework.context这两个包是Spring IoC容器的基础,其中重要的类有BeanFactory,BeanFactory是IoC容器的核心接口,其职责包括:实例化、定位、配置应用程序中的对象及建立这些对象间的依赖关系。 ApplicationContext作为BeanFactory的子…

KubeSphere 社区双周报|2024.09.13-09.26

KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。 本次双周报涵盖时间为:2024.09.13-09.26。 贡献者名单新晋 KubeSphere co…

pbootcms模板如何做好防护

为了提高PbootCMS模板的安全性,可以采取以下步骤进行防护: 第一步:重命名数据文件夹将data文件夹的名字换成其他名称,例如mydata。mv data mydata第二步:修改数据库配置文件打开config文件夹中的database.php文件。 将文件中的data名称改为与第一步中相同的名称(例如myda…

上传失败报错 UNKNOW: Code: 8192; Desc: stripos()

错误提示和您的解决方案提到了将 $ext 传递给 chr() 函数,这在大多数情况下是不合适的,因为 chr() 是用来从ASCII值转换为对应的字符,而 $ext 作为文件扩展名应该是直接的字符串形式。正确的做法应该是确认 $ext 是否为字符串类型,并且检查报错是否源于其他原因,比如误报或…

Prism导航

注册导航页面 注册区域 使用p:RegionManager.RegionName注册页面区域<Window x:Class="WpfApp1.NavigationWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml&quo…

PbootCMS模板安装与授权方法

为了更清晰地展示 PBootCMS 模板的安装与授权步骤,可以将这些步骤整理成一个表格:步骤 描述 操作1 准备环境 将 PBootCMS 系统文件放入支持 PHP(5.3+)的空间。<br>系统自带完整后台及模板,默认采用 SQLite 数据库,无需额外导入和配置。2 访问后台 访问后台地址:&l…

win11 如何修改hosts文件

相信坚持的力量,日复一日的习惯.