el-table自适应列宽实现

这篇具有很好参考价值的文章主要介绍了el-table自适应列宽实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

<template>
      <el-table
        ref="tableRef"
        v-loading="loading"
        :data="tableData"
        border
        stripe
        :header-cell-style="MyHeaderCellStyle"
        :cell-style="MyCellStyle"
        show-summary
        :summary-method="accountSummaries2"
        :height="TableHeight"
      >
        <el-table-column label="序号" type="index" align="center" fixed />
        <el-table-column
          label="单位"
          prop="branch_name"
          align="center"
          fixed
          sortable
          sort-by="branch_no"
          :width="flexColumnWidth('单位','branch_name')"
        />
        <el-table-column v-for="item in headerData" :key="item.name" :label="item.name" align="center">
          <el-table-column
            v-for="obj in item.children"
            :key="obj.prop"
            :label="obj.label"
            :prop="obj.prop"
            align="center"
            sortable
            :formatter="handleFormatter"
          />
        </el-table-column>
      </el-table>
</template>

动态计算

 :width="flexColumnWidth(label,prop)"
<script> 
 export default {
     methods: {
       /**
       * 遍历列的所有内容,获取最宽一列的宽度
       * @param arr
       */
       getMaxLength (arr) {
          return arr.reduce((acc, item) => {
          if (item) {
            const calcLen = this.getTextWidth(item)
            if (acc < calcLen) {
              acc = calcLen
            }
          }
            return acc
          }, 0)
        },
      /**
       * 使用span标签包裹内容,然后计算span的宽度 width: px
       * @param valArr
       */
      getTextWidth (str) {
        let width = 0
        const html = document.createElement('span')
        html.innerText = str
        html.className = 'getTextWidth'
        document.querySelector('body').appendChild(html)
        width = document.querySelector('.getTextWidth').offsetWidth
        document.querySelector('.getTextWidth').remove()
        return width
      },
      /**
       * el-table-column 自适应列宽
       * @param prop_label: 表名
       * @param table_data: 表格数据
       */
      flexColumnWidth (label, prop) {
        // console.log('label', label)
        // console.log('prop', prop)
        // 1.获取该列的所有数据
        const arr = this.tableData.map(x => x[prop])
        arr.push(label) // 把每列的表头也加进去算
        // console.log(arr)
        // 2.计算每列内容最大的宽度 + 表格的内间距(依据实际情况而定)
        return (this.getMaxLength(arr) + 25) + 'px'
      }
   }
}
<style scoped>
  .el-table /deep/ th {
    padding: 0;
    white-space: nowrap;
    min-width: fit-content;
  }

  .el-table /deep/ td {
    padding: 1px;
    white-space: nowrap;
    width: fit-content;
  }

  /** 修改el-card默认paddingL:20px-内边距 **/
  >>> .el-card__body {
    padding: 10px;
  }

  .el-table /deep/ .cell {
    white-space: nowrap;
    width: fit-content;
  }
</style>

效果图:
el-table自适应列宽实现,vue.js,elementui,前端文章来源地址https://www.toymoban.com/news/detail-683463.html

到了这里,关于el-table自适应列宽实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue2+ElementUI的el-table实现新增数据行与删除的功能

    TableIndex.vue 如下 新增 按钮添加数据行 删除 按钮提示是否继续删除

    2024年04月23日
    浏览(33)
  • Vue+ElementUI技巧分享:el-table 中实现灵活的文本换行

    Element UI 是 Vue.js 的一个流行组件库,广泛应用于构建企业级前端界面。在数据密集型的应用程序中, el-table 组件是展示和处理数据的核心。本文将详细探讨如何在 el-table 的单元格中实现不同的换行方式,以优化数据的显示效果。 在某些情况下,我们可能需要处理包含换行符

    2024年01月21日
    浏览(40)
  • Vue结合ElementUi修改<el-table>表格的背景颜色和表头样式

    修改table的表头背景 和 字体颜色: 以下是修改el-table表格内容的背景色和边框样式:

    2024年02月11日
    浏览(45)
  • Vue+Element-UI 实现前端分页功能,利用el-table和el-pagination组件实现表格前端分页

    Vue+Element-UI 实现前端分页功能,利用el-table和el-pagination组件实现表格前端分页:         当table的数据量比较大的时候,一个屏幕展示不出全部的数据,这个时候就需要分页显示。而多数情况下都是做的后端分页,就是将分页参数和查询条件一并传到后端,后端将当前页要

    2024年01月20日
    浏览(43)
  • vue 获取elementUI中的el-table里每一行的index并传到方法中

    通过在el-table组件上绑定@row-click事件,获取所点击的行的index: 请注意,在处理handleRowClick方法时,我们需要计算出所点击的行在el-table数据数组中的位置,这里使用了event.target.parentNode.rowIndex-1来获取其索引值。 使用element-ui中的slot-scope属性,将每一行的索引传递给自定义列

    2024年02月10日
    浏览(39)
  • vue2+elementui的el-table固定列会遮住横向滚动条以及错位

    我是最右侧固定列,所以下面的class名称是 .el-table__fixed-right , 如果有左侧固定请自行替换为 el-table__fixed 防止固定列表格高度错位 如果还没有解决错位, 请看你的 el-table__body-wrapper 是不是自己写了 max-height 的样式属性, 这会影响固定列定位的 解决固定列错位后, 接下来就是

    2024年02月02日
    浏览(41)
  • vue+ElementUI el-table表格单元格编辑增加键盘事件功能(向上、向下、回车键盘事件)

    1、如果单元格编辑使用了插槽功能,需要在插槽上添加一个class(这个类即:当前列的porp值) 2、porp不能重复(正常也不会存在) GitHub源码地址 Gitee源码地址 基于ElementUi或Antd再次封装基础组件文档 TTable组件封装地址

    2024年02月11日
    浏览(54)
  • elementUI el-table实现鼠标悬浮某一行,在鼠标右侧展示提示信息

    背景 el-table组件中,可以通过勾选某条数据来创建单据,但是有些数据没有权限使用,就需要禁用掉勾选的功能,然后当鼠标悬浮在这一行的时候,展示类似于toolTip的提示框。 除了当鼠标悬浮在某一行,展示类似于toolTip的提示框这一条el-table是没有提供配置项的,其他的都

    2024年02月08日
    浏览(49)
  • el-table实现纯前端导出(适用于el-table任意表格)

    2023.9.1今天我学习了如何使用el-table实现前端的导出功能,该方法的好处有无论你的el-table长什么样子,导出之后就是什么样子。 1.安装三个插件 npm install file-save npm install xlsx npm install xlsx-style 2.创建Export2Excel.js 3.按需引入 4.vue.config.js引入 效果: 扩展: 当我们会出现这样的表

    2024年02月10日
    浏览(40)
  • elementui el-table表格实现翻页和搜索均保持勾选状态(后端分页)

    需求: 不管是页面切换还是通过搜索获取数据,都要保持已选中的行保持勾选状态,同时将选中行的内容以标签的形式显示出来,当点击关闭标签时可以对应取消选中状态,点击行中的任意位置也可以切换选中状态,单独勾选复选框一样可以达到要求。 由于需求相对还是蛮

    2024年02月10日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包