前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ElementUI 实现el-table 列宽自适应

ElementUI 实现el-table 列宽自适应

作者头像
py3study
发布2021-05-08 14:51:58
16.1K1
发布2021-05-08 14:51:58
举报
文章被收录于专栏:python3python3

一、概述

Element UI 是 PC 端比较流行的 Vue.js UI 框架,它的组件库基本能满足大部分常见的业务需求。但有时候会有一些定制性比较高的需求,组件本身可能没办法满足。最近在项目里就碰到了。

很多页面都需要用到表格组件el-table。如果没有给el-table-column指定宽度,默认情况下会平均分配给剩余的列。在列数比较多的情况,如果el-table宽度限定在容器内,单元格里的内容就会换行。强制不换行,内容要么在单元格内滚动,要么就会溢出或被截断。

产品想要的效果是:内容保持单行显示,列间距保持一致,表格超出容器允许水平滚动。el-table-column是支持设置固定宽度的,在内容宽度可预知的情况下,也能满足这个需求。问题就在于如何让列宽动态适应内容的宽度。在官方文档也没找到这样的选项,应该是组件本身不支持。

二、技术实现

通过插件v-fit-columns即可实现,列宽自适应。

安装插件

代码语言:javascript
复制
npm?install?v-fit-columns?--save

引入

代码语言:javascript
复制
import?Vue?from?'vue';
import?Plugin?from?'v-fit-columns';
Vue.use(Plugin);

使用示例:

代码语言:javascript
复制
<el-table?v-fit-columns>
??<el-table-column?label="No."?type="index"?class-name="leave-alone"></el-table-column>
??<el-table-column?label="Name"?prop="name"></el-table-column>
??<el-table-column?label="Age"?prop="age"></el-table-column>
</el-table>

在el-table后面加v-fit-columns即可,其他的都不需要改。

先来看一下原始的table效果:

1.png
1.png

发现内容过多,已经开始换行了。

下面使用v-fit-columns

test.vue

代码语言:javascript
复制
<template>
??<div>
????<el-table?v-fit-columns
??????:data="tableData"
??????border
??????style="width:?100%">
??????<el-table-column
????????prop="date"
????????label="日期">
??????</el-table-column>
??????<el-table-column
????????prop="name"
????????label="姓名">
??????</el-table-column>
??????<el-table-column
????????prop="phone"
????????label="手机号码">
??????</el-table-column>
??????<el-table-column
????????prop="address"
????????label="地址">
??????</el-table-column>
??????<el-table-column
????????prop="describe"
????????label="描述">
??????</el-table-column>
????</el-table>
??</div>
</template>

<script>
??import?Vue?from?'vue';
??import?Plugin?from?'v-fit-columns';
??Vue.use(Plugin);
??export?default?{
????data()?{
??????return?{
????????tableData:?[{
??????????date:?'2016-05-02',
??????????name:?'王小虎',
??????????phone:12345678910,
??????????address:?'上海市普陀区金沙江路?1518?弄',
??????????describe:'松江区,位于上海市西南部,历史文化悠久,有着“上海之根”?的称呼。位于黄浦江上游,东与闵行区、奉贤区为邻,南、西南与金山区交界,西、北与青浦区接壤'

????????},?{
??????????date:?'2016-05-04',
??????????name:?'王小虎',
??????????phone:12345678910,
??????????address:?'上海市普陀区金沙江路?1517?弄FDSA',
??????????describe:'徐汇区,上海市辖区,位于上海中心城区的西南部,东北侧与黄浦区毗邻,东临黄浦江,与浦东新区隔江相望,西与闵行区分界,北与静安区、长宁区接壤。',
????????},?{
??????????date:?'2016-05-01',
??????????name:?'王小虎',
??????????phone:12345678910,
??????????address:?'上海市普陀区金沙江路?1519?弄54YGFDSF',
??????????describe:'浦东新区为上海市的一个市辖区,因地处黄浦江东而得名。浦东南与奉贤区、闵行区两区接壤,西与徐汇区、黄浦区、虹口区、杨浦区、宝山区五区隔黄浦江相望,北与崇明区隔长江相望;地势东南高,西北低,气温偏高、降水偏多、日照时数偏少'
????????},?{
??????????date:?'2016-05-03',
??????????name:?'王小虎',
??????????phone:12345678910,
??????????address:?'上海市普陀区金沙江路?1516?弄',
??????????describe:'黄浦区,隶属于上海市,地处黄浦江和苏州河合流处的西南端。北起苏州河,东、南濒黄浦江,西至成都北路、延安中路、陕西南路、肇嘉浜路、瑞金南路。'
????????}]
??????}
????},
????methods:{
????}
??}
</script>
<style?scoped>
</style>

刷新页面,效果如下:

1.png
1.png

?可以看到,table下面出现了一个滚动条,可以向左向右拉动。

本文参考链接:

https://www.cnblogs.com/lzkwin/p/13575805.html

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-05-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、概述
  • 二、技术实现
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com