Vue + ElementUI el-table动态生成表格,表头宽度自适应实现

Vue + ElementUI el-table动态生成表格,表头宽度自适应实现

需求

最近手头上有个项目,其中一个页面的表格,需要根据不同数据库表动态生成table,并且表头长度非固定,因而需要根据表头内容自适应该列表头的宽度。

方法

ElementUI针对表格,开放了一个自定义render方法,我们直接使用这个自定义方法对每个表头按lable长度设置宽度
在这里插入图片描述

代码实现

在表格中直接使用render-header方法:

<el-table size="small" tooltip-effect="light" fit :header-cell-style="{ background: '#F6F8FB' }" :data="tableData" stripe :max-height="tableHeight" style="width: 100%">
   <el-table-column :render-header="headSpanFit" show-overflow-tooltip v-for="(item,index) in tableHeader" :key="index" :prop="item.prop" header-align="center" align="center" :label="item.label" min-width="80"></el-table-column>
</el-table>

在methods中定义headSpanFit方法

headSpanFit (h, { column, index }) {
      let labelLong = column.label.length // 表头label长度
      let size = 14 // 根据需要定义标尺,直接使用字体大小确定就行,也可以根据需要定义
      column.minWidth = labelLong * size // 根据label长度计算该表头最终宽度
      return h('span', { class: 'cell-content', style: { width: '100%' } }, [column.label])
    },
效果如下

在这里插入图片描述

仅供参考,有问题欢迎提出
  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值