el-table-column 内容不自动换行的解决方法

目录
  • 场景
  • 方式一
  • 方式二

场景

使用ElementUI中的Table 表格时,如果列内容超过列宽,会默认换行,如下

这样看起来不美观,还有可能引起其它样式问题。那么如何解决呢?

方式一

使用Table组件自带的show-overflow-tooltip属性

参数说明类型可选值默认值show-overflow-tooltip当内容过长被隐藏时显示 tooltipBoolean—false

添加该属性之后,如果内容超出列宽,超长部分会默认省略。当鼠标滑过该内容时,会弹出Tip提示

<!--示例-->
<el-table-column
     prop="departName"
     label="部门"
     show-overflow-tooltip
       >
</el-table-column>

注:该属性谨慎使用,如果多列使用且内容较多时,会影响页面性能

方式二

计算每列最大宽度,使内容不换行;配合设置最大字符长度,可以解决大多数场景问题。接下来展示最基础的列宽计算方式

示例如下

/**
 * 使用span标签包裹内容,然后计算span的宽度 width: px
 * @param valArr
 */
 function getTextWidth(str) {
    let padding = 0;//单元格左右padding距离
    let width = 0;
    let span = document.createElement('span');
    span.innerText = str;
    span.className = 'getwidth';
    document.querySelector('body').appendChild(span);
    // 这里可以获取当前单元格的font-size 以及 内容的中英文、字母等  做更精确的计算
    width = document.querySelector('.getwidth').offsetWidth+padding;
    document.querySelector('.getwidth').remove();
    return width;
}

/**
* 遍历列的所有内容,获取最宽一列的宽度
* @param {Array} arr 需要计算的数据
* @param {Number} minwidth 列最小宽度
*/
function getMaxLength (arr,minwidth=60) {
    return arr.reduce((acc, item) => {
        if (item) {
            let calcLen = getTextWidth(item);
            if (acc < calcLen) {
                acc = calcLen;
            }
        }
        return acc<minwidth?minwidth:acc;
    }, 0)
}

/**
* @description 计算列表列宽(把内容撑开)
* @param {Array} columns 列的数组
* @param {Array} tableArr 列表的数组
* */
function calcColumnsWidth(columns, tableArr) {
    columns.forEach((item) => {
        const arr = tableArr.map((x) => x[item.props]);
        item.width = getMaxLength(arr);
        arr.push(item.label); // 把每列的表头也加进去算
    });
    return columns;
}

<!--获取列表数据之后,计算每列最大宽度-->
let res = await this.axios.post('/api/xxx/xxxx');
if(res.data.data.length > 0){
    const columns = calcColumnsWidth(this.tableHead, res.data.data);
    this.tableHead = columns;
}

效果如下:列宽自动撑开,列表宽度不够时,底部会出现滚动轴。

到此这篇关于el-table-column 内容不自动换行的解决方法的文章就介绍到这了,更多相关el-table-column 不自动换行内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • vue中el-table格式化el-table-column内容的三种方法

    目录 el-table格式化el-table-column内容 一.template scope .v-if判断 二.利用formatter.slot属性 三.但这些对我当前的情况,并不适用.所以,后来发现一个好方法.将两种方法结合起来,使用slot,自定义 formatter.(自定义)灵活应用就好啦 博文参考: el-table格式化el-table-column内容 遇到一个需求,一个循环展示的table中的某项,或者某几项需要格式化.对于格式化的方法,主要有template scope.

  • el-table-column 内容不自动换行的解决方法

    目录 场景 方式一 方式二 场景 使用ElementUI中的Table 表格时,如果列内容超过列宽,会默认换行,如下 这样看起来不美观,还有可能引起其它样式问题.那么如何解决呢? 方式一 使用Table组件自带的show-overflow-tooltip属性 参数说明类型可选值默认值show-overflow-tooltip当内容过长被隐藏时显示 tooltipBoolean—false 添加该属性之后,如果内容超出列宽,超长部分会默认省略.当鼠标滑过该内容时,会弹出Tip提示 <!--示例--

  • jQueryMobile之窗体长内容的缺陷与解决方法实例分析

    本文实例讲述了jQueryMobile窗体长内容的缺陷与解决方法.分享给大家供大家参考,具体如下: 前面的一篇文章<jQueryMobile之Helloworld与页面切换的方法>没有考虑到窗体中放置长内容的状况 一旦窗体中出现长内容,使用笔者那种固定header与footer的全屏布局是存在缺陷的, 如图所示,长内容最后的内容,直到滚动条拉到最底部也无法穷尽, 而且很有可能的是,虽然现在这个地方的内容是显示为半透明,但往往这个位置是一些提交按钮什么的, 用户根本就没法点, 因此,需要进行改进

  • php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)

    在做PHP程序时,需要使用PHP做的文件下载 那做就做呗把代码复制过来改了一改. 很多效果也出来了 那么点击下载后,恩,本以为搞定了文件下载,谁知道,图片打开的时候提示文件损坏,这我就观察了文件的大小.似乎真是多了 1KB左右. 使用PS打开,恩,提示了损坏,不过图象可以出来. 那么我就认为是 那多出来的 1kb的问题了. 然后,我把一个txt上传上去,然后下载. 果然发现,文件的前面以及后面,都多了几个 字符. 那我就在想应该怎么去掉啊.各种百度,谷歌,上论坛提问. 最后,经过我一个多小时的搜

  • 表单提交错误后返回内容消失问题的解决方法(PHP网站)

    表单提交错误后返回内容消失怎么办呐,今天就来分析解决一下这个问题. 状况概述: 做填写表单信息提交的时候会碰到一个问题就是当用户填写并提交表单后,程序判断不符合要求并返回,返回之后之前填写的表单信息会被清空了的情况.如果填写的信息量少还无所谓,如果填写的信息量比较多,这会直接打击到填写信息的人的良好心情.因此解决表单提交错误返回后填写的内容消失的问题是一个提高用户体验度的迫在眉睫的问题. 对于这种问题,综合总结了大概有下面几种情况: (1)页面使用了session_start函数,这个函数有个特

  • div中文字内容溢出常见的解决方法

    由于文字内容的长度不确定性和页面布局的固定性,常常会遇到文字溢出的状况,有一下解决方法: 1:规定文字父容器的宽高,设置超出隐藏:overflo:"hidde" -------缺点是会经常遇到最后一行文字显示不全的情况,建议在只控制一行文字显示的时候使用 2:css+div防止文字溢出,超出部分变成省略号,折行显示,white-space:nowrap;word-break:break-all: text-overflow:ellipsis; -o-text-overflow:elli

  • Mysql错误Every derived table must have its own alias解决方法

    mysql执行多表查询时报错: [SQL] SELECT * from ( select e.account from employee e UNION SELECT u.account from `user` u UNION SELECT a.account from agent a ) [Err] 1248 - Every derived table must have its own alias 这句话的意思是每个派生出来的表必须有一个自己的别名 一般是在多表查询或者子查询的时候会出现这个

  • ie9后浏览器fckeditor无法上传图片、弹出浮层内容不显示的解决方法

    第一种方法: 复制代码 代码如下: <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" /> 讓IE9變成IE8在跑 第二种方法: 升级到IE9后,fckeditor在IE9里的弹出浮动层会出现bug,里面的内容不会出现.所以无论是想在页面编辑器里粘贴内容,还是上传图片等凡是需要弹出窗口操作的东西都会有问题,想要进行其它的操作也只能重新刷新页面.原因是IE9不支持var $=documen

  • mysql提示[Warning] Invalid (old?) table or database name问题的解决方法

    DROP TABLE IF EXISTS [TEMP_TABLE_NAME]; create temporary table [TEMP_TABLE_NAME] select col1,col2,... from [TABLE_NAME]; alter table [TEMP_TABLE_NAME] add unique idx_col1(col1); 经过以上操作中,多次出现该warning问题.通过查询和跟踪调试源码,有以下线索和处理方式: mysql的"[Warning] Invalid

  • FCKeditor 2.6 编码错误导致修改的内容出现乱码的解决方法

    FCKeditor 2.6 的目录 editor 下有一文件 fckeditor.html. 我修改了该文件,其中有些中文字,在 IE 中打开之,发现是乱码,原来这个文件有问题.文件中指定了 charset 为 utf-8: <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 可是文件却是以 ANSI 保存的,改为以 UTF-8 保存,中文不再乱码了. 顺便说一下,调用

  • 使用IDEA编写jsp时EL表达式不起作用的问题及解决方法

    在使用IDEA开发maven+springMVC项目时遇到不加载EL表达式的问题,怎么处理呢?下面小编给大家带来了实现代码,一起看看吧 加载如下JSP代码: <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"

随机推荐