element el-table表格内容宽度自适应,不换行,不隐藏

2024.2.27今天我学习了如何用el-table实现表格宽度的自适应,当我们动态渲染表格数据的时候,有时候因为内容太多会出现挤压换行的效果:

我们需要根据内容的最大长度设置动态的宽度,这边我在utils里面封装了一个js:

javascript 复制代码
//el-table表格内容宽度自适应
const content_width_adaptation_js = {
  flexColumnWidth(label, prop, table_data) {
    //label表格列表
    //prop列表对应的数据
    //table_data表格数据
    const arr = table_data.map(item => item[prop])
    arr.push(label)
    // 自动撑开表格内容最大宽度
    function getMaxLength(arr) {
      return arr.reduce((acc, item) => {
        if (item) {
          const calcLen = getTextWidth(item)
          if (acc < calcLen) {
            acc = calcLen
          }
        }
        return acc
      }, 0)
    }
    // 自动撑开表格内容最大宽度
    function 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
    }
    return (getMaxLength(arr) + 40) + 'px'
  },
}
export default content_width_adaptation_js

然后在main.js中引入:

javascript 复制代码
import elTableAdaptationWidth from '@/utils/el_table_content_width_adaptation'


//el-table表格内容宽度自适应
Vue.prototype.elTableAdaptationWidth = elTableAdaptationWidth.flexColumnWidth

然后在页面中直接调用就可以了:

html 复制代码
<el-table>
<el-table-column 
        v-for="item in tableList" 
        :label="item.label" 
        :prop="item.prop"
        :width="elTableAdaptationWidth(item.label,item.prop,tableList)"
        />
</el-table>

效果如下:

相关推荐
敲代码的彭于晏9 分钟前
感谢掘金,我的书又出版了
前端·vue.js·react.js
龙猫里的小梅啊17 分钟前
CSS(五)CSS盒模型
前端·css·html
一袋米扛几楼9821 分钟前
【前端开发】基于TypeScript打破 React 黑盒——组件的“工厂心智模型”与源码解剖
javascript·react.js·typescript
明月_清风39 分钟前
Nginx 生产环境配置完全指南:从安全加固到性能调优
前端·nginx
用户6000718191041 分钟前
【翻译】用 Reanimated CSS 动画为 TextInput 添加发光效果
前端
李剑一1 小时前
前后端命名冲突?驼峰与下划线的统一方案(附可直接复用代码)
前端
用户11481867894841 小时前
Git Stash 丢失后的完整找回指南
前端·git
代码不加糖1 小时前
2026 React 面试“通关秘籍”:高频 12 问 + 深度解析(含Hooks源码思想)
前端·react.js·面试
我滴老baby1 小时前
ReAct推理模式详解让智能体学会边思考边行动
前端·react.js·前端框架
菜鸟小码1 小时前
MapReduce 核心阶段深度解析:Map 阶段与 Reduce 阶段的作用及执行流程
前端·javascript·mapreduce