首页 > 其他分享 >ElementUI中实现el-table表格列宽自适应,列根据内容自动撑满,内容不换行

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

时间:2024-09-29 14:48:15浏览次数:8  
标签:el style const 表格 ElementUI 撑满 table span 列宽

一、概述

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

当前显示效果:

 期望实现效果:

 二、实现思路

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

代码如下:

/**
 * 表格列宽自适应
 * @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;
}

使用:

<el-table :data="tableData" style="width: 100%">
    <el-table-column prop="date" label="Date" width="180" />
    <el-table-column prop="name" label="Name" width="180" />
    <el-table-column prop="address" label="Address" :width="getColumnWidth('address', tableData)"/>
</el-table>

三、总结

其实是比较dirty的实现方式,性能不算很好,但胜在简单好用。另外还可以全局注入该方法。

网上也有比较专业的组件库解决这一问题:

af-table-column:

https://github.com/legendJaden/AFTableColumn

基于 element-ui 组件库的 el-table-column 组件, 支持自适应列宽功能

 

 

 

 

 

标签:el,style,const,表格,ElementUI,撑满,table,span,列宽
From: https://www.cnblogs.com/amnesia999/p/18439754

相关文章

  • springboot+vue+elementui大文件分片上传
    工具类方法:/***大文件分片上传*@paramfileName文件名*@paramfile文件*@paramfileKey文件key*@paramshardIndex当前分片下标*@paramshardTotal分片总量*/publicstaticvoidbigUpload(StringfileNam......
  • shell脚本——检索mysql数据库中得用户,如果没有就创建
     #!/bin/bash#author:goujinyangset-eUSER1=mysqlsiUSER2=dbqueryUSER3=dboperUSER4=yyzcUSERS=($USER1$USER2$USER3$USER4)USER_PASS=123123#MySQL用户名和密码MYSQL_USER="root"MYSQL_PASSWORD="Root#123"#MYSQL_HOST="local......
  • EasyExcel导出文件基本流程以及原理分析 学习笔记(持续更新)
    EasyExcel导出文件基本流程导出文件基本流程获取数据首先获得需要导出的文件的数据内容,用一个list保存List<SysStudent>list=sysStudentService.queryList(sysStudent);定义文件名给导出的文件定义一个名字,可以添加日期或者根据输入添加其他信息,保证文件名唯一S......
  • 自己封装Elasticsearch,下载到本地仓库复用
    拉取代码git拉取yxh-elasticsearch:es基本封装工具拉完修改你可以根据自己去修改这些代码,最后install加package,就打到了本地maven仓库,调用的时候也非常方便,可以看下文。介绍注解一共有三个自定义注解@DocumentIndex作用一共四个字段,indexName是用于你在实......
  • Bad or missing usercopy whitelist? Kernel memory overwrite attempt detected to S
    Linux内核有一个usercopywhitelist机制,只允许这里面的region来做usercopy。如果是用kmem_cache_create申请的kmem_cache申请的内存空间来copytouser或者copyfromuser,那么就会报这个错。这时要用kmem_cache_create_usercopy,来将申请的区域加入到usercopywhitelist中。/***......
  • sentinel-transport-SPI-HeartbeatSenderInitFunc
    说明我们引入以下依赖<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-transport-simple-http</artifactId><version>1.8.6</version></dependency>配置环境变量-Dcsp.sentinel.dashboard.se......
  • sentinel-tansport-SPI-CommandSPI
    说明我们引入以下<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-transport-simple-http</artifactId><version>1.8.6</version></dependency>通过初始化com.alibaba.csp.sentinel.init.Ini......
  • 如何做好游戏中美术项目管理?TAPD带你挣脱海量Excel困扰
    这两年国内手游竞争日趋白日化,版号的限制、买量内卷、国内用户增量日趋饱和,大厂更是把游戏美术和宣发美术卷到了影视级的高度,游戏美术设计的方向早已走向了全球化。有别于其他项目类别,在游戏项目中,尤其是大型游戏项目团队,都设立了美术项目经理的岗位,称之为APM。作为一个APM,......
  • Selenium + Titanium代理获取请求的接口数据
    有一个采集数据的需求,分析了页面数据后发现列表有一个id,但是没有其他数据,打开详情并不是通过id,而是其他一个字段,这就说明通过selenium抓取页面数据还不行,还要接口返回的数据。这个时候就需要用到代理了,在代理层面把数据拦截下来,把自己想要的接口数据保存起来,然后通过页面找到的id......
  • CVEN9612 – Catchment Modelling
    CVEN9612–CatchmentModellingAssignment1Part1–Rainfall-RunoffModelingandRoutinghispartoftheassignmentisworth15%ofthetotalgradeforCVEN9612.TheassignmentanswersaretobesubmittedonlineinMoodleasashortreport.Assignment1......