这里可对内容为文本的列进行自适应列宽

以下为 工具方法

/**
* 使用span标签包裹内容,然后计算span的宽度 width: px
* @param valArr
*/
function getTextWidth(str) {
let width = 0;
  // 创建 span 标签对象 并对该标签 插入 文本属性 及 类名
let html = document.createElement('span');
html.innerText = str;
html.className = 'getTextWidth';
  // 获取 body 元素 并插入 前面创建的 span 标签
document.querySelector('body').appendChild(html);
  // 获取当前 span 标签 的类名的 偏移宽度,这个宽度与页面所显示宽度一致
width = document.querySelector('.getTextWidth').offsetWidth;
document.querySelector('.getTextWidth').remove();
return width;
} /**
* 遍历列的所有内容,获取最宽一列的宽度
* @param arr
*/
function getMaxLength(arr) {
return arr.reduce((acc, item) => {
if (item) {
let calcLen = getTextWidth(item)
if (acc < calcLen) {
acc = calcLen
}
}
return acc
}, 0)
}

完成了工具方法的实现,下面对el-table的数据源进行处理

tableData: {
  handler(oldVal, newVal) {
    this.tableData = oldVal
    const _this = this
    _this.tableData = _this.tableData.map(function(value) {
      const arr = oldVal.map(x => x[value.prop]) // 获取每一列的所有数据
      arr.push(value.label) // 把每列的表头也加进去算
      value.width = getMaxLength(arr) + 20 // 每列内容最大的宽度 + 表格的内间距(依据实际情况而定)
      return value
    })
  },
  deep: true,
  immediate: true
},

页面el-table渲染dom结构

<el-table-column v-for="(item,index) in tableData" :key="Math.random()" :prop="item.prop" :label="item.label" :width="item.width"></el-table-column>

这里要求自定义一个 列表结构 ,可在工具类自定义 也可在 data 定义

tableData: [{
label: '姓名',
prop: 'name',
width: "60"
}
],

el-table自适应列宽的更多相关文章

  1. Asp.net 设置GridView自适应列宽不变形

    动态绑定的GridView由于列数不固定,而列又太多,这样设置GridView固定宽度就不能满足需求了.为此整理了两种方法来达到GridView自适应列宽不变形的效果. //在GridView的行数据 ...

  2. Delphi xe8 FMX StringGrid根据内容自适应列宽。

    Delphi xe8 FMX StringGrid根据内容自适应列宽. 网上的资料比较复杂,而且不是根据字体字号等设置列宽.故自己写了个function来用. function GetColMaxDa ...

  3. NPOI自适应列宽

    当本地没有安装Excel,但是又想导出Excel,采用Office插件是行不通的,NPOI是导出Excel的一个开源的插件.在导出Excel后,为了方便阅读,可以才采用自适应列宽的方式使得单元格的宽度 ...

  4. devpress grid表格自适应列宽的问题

    /// <summary> /// 自适应列宽,显示横向滚轴,只有当所有列都已经在界面上加载完成之后才能生效 /// </summary> public void setAut ...

  5. 设置tablewidget自适应列宽和设置自动等宽

      在网上很容易知道自适应列宽,100%不留空显示,这里还是提下: /*设置表格是否充满,即行末不留空*/ ui->tableWidget->horizontalHeader()-> ...

  6. 原生js实现table表格列宽自由缩放

    <!DOCTYPE html> <html> <head> <meta charset="gbk"> <title>ta ...

  7. .net设置中GridView自适应列宽

    有一个项目只有30分钟开发时间,速成,使用了古老的.net gridview. 但需要列宽自适应好看些. 于是琢磨了,实现思路如下. 先看下大致效果(很粗暴没有优化) 代码如下: protected ...

  8. 原生js实现 table表格列宽拖拽

    查看效果 <!DOCTYPE html> <html> <head> <meta charset="gbk"> <title& ...

  9. Dev gridView中设置自适应列宽和日期显示格式、金额的显示格式

    在Dev GridView控件中,数据库中表数据日期都是长日期格式(yyyy-MM-dd HH:mm:ss),但显示在控件变成短日期格式(yyyy-MM-dd),金额显示要显示精确的数值, 比如80. ...

  10. 20180429 xlVBA套打单据自适应列宽

    Sub TestAutoAdjustColumnWidthBaseOnModel() Set ModelSheet = ThisWorkbook.Worksheets("单据模板" ...

随机推荐

  1. springboot脱包部署

    <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactI ...

  2. day05-2-yaml

    yaml 1.yaml介绍 YAML是 "YAML Ain't a Markup Language" (YAML不是一种标记语言)的递归缩写.在开发这种语言时,YAML的意思其实是 ...

  3. Vditor在原生JS中如何结合后端使用

    目录 1.Vditor介绍 2.如何在原生JS中结合后端使用 2.1 背景 2.2 正确使用方式 2.2.1 编辑页面 2.2.2 回显页面(修改页面) 2.2.3 预览页面 3.小结一下 1.Vdi ...

  4. Django笔记三之使用model对数据库进行增删改查

    本篇笔记目录索引如下: model 准备 增 查 删 改 1.model 准备 在上一篇笔记中,我们新建了一个 application,增加了几个model 同步到了数据库,这次我们新建一个名为 bl ...

  5. koa中间件的实现原理

    koa中间件的实现原理如何?先来看一个例子. koa的执行顺序是这样的: const middleware = async function (ctx, next) { console.log(1) ...

  6. Python3.10 的开发环境的搭建

    安装 下载 Python3.10 或者其他版本:Download Python | Python.org 如果 Windows 操作系统下载,默认是下载 64 位操作系统的 exe 安装包:pytho ...

  7. Collection单列集合总结

    这篇文章记录了Collection集合,List集合,Set集合 在文章第七点总结了两大系列集合的五种实现类的区别,有需要的小伙伴可以直接去查看 一.什么是集合 集合是Java中存储对象数据的一种容器 ...

  8. Java面试——写一个生产者与消费者

    更多内容,前往个人博客 一.通过synchronize 中的 wait 和 notify 实现 [1]我们可以将生产者和消费者需要的方法写在公共类中 1 package com.yintong.con ...

  9. Redis 线程模型

    一.概述 [1]Redis 是基于 Reactor 模式开发的网络事件处理器:这个处理器被称为文件事件处理器(file event handler),这个文件事件处理器是单线程的,所以 Redis 才 ...

  10. NetCore 使用 Swashbuckle 搭建 SwaggerHub

    什么是SwaggerHub? Hub 谓之 中心, 所以 SwaggerHub即swagger中心. 什么时候需要它? 通常, 公司都拥有多个服务, 例如商品服务, 订单服务, 用户服务, 等等, 每 ...