elementUI的table表格宽度自适应(不换行不隐藏)

注册公共方法utils代码

/**
 * 全局el-table内容自适应方法  flexWidth
 * @param prop 每列的prop 可传''
 * @param tableData 表格数据
 * @param title 标题长内容短的,传标题  可不传
 * @param num 列中有标签等加的富余量
 * @returns 列的宽度
 * 注:prop,title有一个必传
 */
exports.install = function(Vue, options) {
    Vue.prototype.flexWidth = function(prop, tableData, title, num = 0) {
        if (tableData.length === 0) { //表格没数据不做处理
            return;
        }
        let flexWidth = 0; //初始化表格列宽
        let columnContent = ''; //占位最宽的内容
        let canvas = document.createElement("canvas");
        let context = canvas.getContext("2d");
        context.font = "14px Microsoft YaHei";
        if ((prop === '') && title) { //标题长内容少的,取标题的值,
            columnContent = title
        } else { // 获取该列中占位最宽的内容
            let index = 0;
            for (let i = 0; i < tableData.length; i++) {
                const now_temp = tableData[i][prop] + '';
                const max_temp = tableData[index][prop] + '';
                const now_temp_w = context.measureText(now_temp).width
                const max_temp_w = context.measureText(max_temp).width
                if (now_temp_w > max_temp_w) {
                    index = i;
                }
            }
            columnContent = tableData[index][prop]
            //比较占位最宽的值跟标题、标题为空的留出四个位置
            const column_w = context.measureText(columnContent).width
            const title_w = context.measureText(title).width
            if (column_w < title_w) {
                columnContent = title || '留四个字'
            }
        }
        // 计算最宽内容的列宽
        let width = context.measureText(columnContent);
        flexWidth = width.width + 40 + num
        return flexWidth + 'px';
    }

}

使用

:min-width="flexWidth('taskname', apptaskList, '任务名称')"
//taskname为单元格字段,apptaskList为table的data,任务名称为th标题
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要使ElementUI表格宽度自适应,可以使用以下方法: 1. 设置表格宽度为100%: ``` <el-table :data="tableData" style="width: 100%"> ... </el-table> ``` 2. 使用表格的fit属性: ``` <el-table :data="tableData" :fit="true"> ... </el-table> ``` 3. 使用表格的max-height属性,并将其设置为窗口高度的一部分: ``` <el-table :data="tableData" :max-height="window.innerHeight - 200"> ... </el-table> ``` 其中,window.innerHeight表示窗口的高度,200是表格之外的其他元素的高度,可以根据实际情况进行调整。 ### 回答2: Element UI提供的表格(Table)组件可以方便地创建表格,并且可以灵活地对其进行配置和定制。其中一个重要的特点就是可以让表格宽度自适应。 实现Element UI表格宽度自适应的方法有多种,以下是其中的两种常用方法: 1. 使用el-table标签的width属性 在使用Element UI的Table组件时,可以设置el-table标签的width属性,该属性指定了表格的总宽度。如果width属性值为固定值,则表格宽度固定,无法自适应;如果width属性值为auto,则表格宽度会自动根据表格内容自适应。 例如下面的代码中,我们使用了一个el-table标签,并设置它的width属性为auto: ``` <el-table :data="tableData" style="width: 100%" :width="auto"> <!-- 表格列定义 --> </el-table> ``` 这样设置之后,表格宽度就会根据表格内容自适应。 2. 使用CSS样式设置表格宽度 另一种方法是通过CSS样式来设置表格宽度。在实现这种方式时,需要设置表格的外层容器为弹性布局(flex布局),并设置宽度为100%,表格本身设为弹性项(flex项),并设置宽度为auto。这样,表格会自动根据父容器的宽度来调整自身的宽度。 例如下面的代码中,我们给表格外层容器div设置了flex布局以及宽度100%,并给表格设置了flex项的样式,并将它的宽度设置为auto: ``` <div style="display: flex; flex-direction: column; width: 100%"> <el-table :data="tableData" style="flex: 1; width: auto"> <!-- 表格列定义 --> </el-table> </div> ``` 这样就可以实现Element UI表格宽度自适应了。需要注意的是,在设置表格宽度时,应该考虑到表格在不同屏幕下的表现,避免出现表格溢出或者过于拥挤的情况。如果表格内容过多,可以考虑使用表格滚动条、分页等方式来进行分隔和展示。 ### 回答3: ElementUI是一套基于Vue.js 2.0的组件库,其中的Table组件是用于处理大量数据的重要组件之一。在实际开发中,我们难免遇到需要Table宽度自适应的需求。正常情况下,Table宽度默认根据列数等分,但是我们有些时候希望Table宽度能够根据内容自适应ElementUITable组件已经提供了属性 `fit`,设置为 `true`,可以让表格自动宽度适应父元素,同时也可以设置属性 `max-height` 来限制表格的最大高度。如下所示: ``` <el-table :data="tableData" style="width: 100%" :fit="true" :height="tableHeight"> <el-table-column prop="name" label="姓名" width="180"> </el-table-column> <el-table-column prop="age" label="年纪"> </el-table-column> <el-table-column prop="address" label="地址"> </el-table-column> </el-table> ``` 需要注意的是,如果表格中存在指定了宽度的列,那么表格宽度可能不会完全自适应。在这种情况下,我们需要设置该列的宽度自适应,例如: ``` <el-table-column type="expand" width="60"> <template slot-scope="props"> <el-form :model="props.row" :label-position="left" inline> <el-form-item label="姓名"> <el-input v-model="props.row.name"></el-input> </el-form-item> <el-form-item label="地址"> <el-input v-model="props.row.address"></el-input> </el-form-item> <el-form-item label="邮编"> <el-input v-model="props.row.zip"></el-input> </el-form-item> </el-form> </template> </el-table-column> <el-table-column label="操作" width="180"> <template slot-scope="scope"> <el-button type="primary" @click="$router.push({ path: '/detail', query: { id: scope.row.id } })">查看详细信息</el-button> </template> </el-table-column> ``` 除了以上方式,我们还可以通过CSS样式来实现Table宽度自适应的效果。给Table组件的外层容器设置 `display: table; width: 100%;`,给Table组件的内层容器设置 `display: table-cell;`,这样Table组件的宽度就会根据内容自适应了: ``` <div style="display: table; width: 100%;"> <el-table :data="tableData" style="width: 100%; display: table-cell;"> <el-table-column prop="name" label="姓名"> </el-table-column> <el-table-column prop="age" label="年纪"> </el-table-column> <el-table-column prop="address" label="地址"> </el-table-column> </el-table> </div> ``` 总之,ElementUITable组件提供了多种方法,让我们能够很方便地实现Table宽度自适应的效果。根据实际需求选择合适的方法来使用即可。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值