vue element表格某一列内容过多,超出省略号显示的实现

 更新时间:2022年01月24日 10:33:50   作者:璐哈路哈呦  
这篇文章主要介绍了vue element表格某一列内容过多,超出省略号显示的实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

element表格某一列内容过多,超出省略号显示

在使用element组件库里面的table组件时,遇到某一个字段内容过多,导致td高度被撑开,布局显得很不美观,像这样

 这时我们只要给table-cloumn添加一个属性show-overflow-tooltip,

<el-table-column label="描述" :show-overflow-tooltip='true'>
              <template slot-scope="scope">
                <span>{{scope.row.ms}}</span>
              </template>
            </el-table-column>

实现超出隐藏,并有提示,这样的话会有下面效果:

 提示的长度特别长,超出了屏幕,不太好看。

可以在处理下样式,如下:

<style>
 .el-tooltip__popper{
    max-width:20%;
  }
  .el-tooltip__popper,.el-tooltip__popper.is-dark{
    background:rgb(48, 65, 86) !important;
    color: #fff !important;
    line-height: 24px;
  }
</style>

这样就好了,效果如下

 如果想要设置,显示几行,超过指定的值再隐藏,可以参考下面

element-UI table文字超出两行,隐藏多余文字,移入显示tips

element-UI表格的列属性

通过设置 :show-overflow-tooltip=“true” 这个属性可以达成超出一行的文字用省略号替代,并带有移入时tips显示全部内容的需求。但是如果想要文本超出两行、三行的需求,显然设置这个属性是无法完成的。

超出两行隐藏多余文本,移入时tips显示全部内容

我们想完成的是超出两行才用省略号隐藏多余文本,并且移入才会有tips显示;两行以内的文本则不隐藏也不显示tips。

超出的文本的隐藏

.myNote{
  display:-webkit-box;
  text-overflow:ellipsis;
  overflow:hidden;
  -webkit-line-clamp: 2;
  -webkit-box-orient:vertical;
}

文本超过两行,移入时tips显示全部内容

<!-- tips悬浮提示 -->
<el-tooltip
        placement="top"
        v-model="scope.row.showTooltip"
        :open-delay="500"
        effect="dark"
        :disabled="!scope.row.showTooltip">
  <div slot="content">{{scope.row.note}}</div>
  <div @mouseenter="showTips($event,scope.row)" class='myNote'>{{scope.row.note}}</div>
</el-tooltip>

注意! 显示悬浮提示时v-model 和 disabled属性要一起使用才有效果。

showTips(obj, row){
      /*obj为鼠标移入时的事件对象*/
      /*currentWidth 为文本在页面中所占的宽度,创建标签,加入到页面,获取currentWidth ,最后在移除*/
      let TemporaryTag = document.createElement('span');
      TemporaryTag.innerText = row.note;
      TemporaryTag.className = 'getTextWidth';
      document.querySelector('body').appendChild(TemporaryTag);
      let currentWidth = document.querySelector('.getTextWidth').offsetWidth;
      document.querySelector('.getTextWidth').remove();
      /*cellWidth为表格容器的宽度*/
      const cellWidth = obj.target.offsetWidth
      /*当文本宽度小于||等于容器宽度两倍时,代表文本显示未超过两行*/
      currentWidth <= (2*cellWidth) ? row.showTooltip = false : row.showTooltip = true
}

通过长度判断

在这里插入图片描述

一开始我是想通过表格高度去判断,但是后来发现,高度不是一个固定不变的值,会随着移入移出变化,并且其他列的高度超出也会影响到一整行的高度。所以最后还是通过文本宽度来判断,把文本宽度与容器宽度比较,这样得到的值才是固定不变的。

有朋友说会出现多个tips,我是直接放在el-table-column的template里面的,目前没发现这种情况。

<el-table-column
                prop="note"
                label="简介">
          <template slot-scope="scope">
            <!-- tips悬浮提示 -->
            <el-tooltip
                    placement="top"
                    v-model="scope.row.showTooltip"
                    :open-delay="500"
                    effect="dark"
                    :disabled="!scope.row.showTooltip">
              <div slot="content">{{scope.row.note}}</div>
              <div @mouseenter="showTips($event,scope.row)" class='myNote'>{{scope.row.note}}</div>
            </el-tooltip>
          </template>
        </el-table-column>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 使用element+vuedraggable实现图片上传拖拽排序

    使用element+vuedraggable实现图片上传拖拽排序

    这篇文章主要为大家详细介绍了使用element+vuedraggable实现图片上传拖拽排序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Vue中路由参数与查询参数传递对比解析

    Vue中路由参数与查询参数传递对比解析

    在Vue.js中,路由与导航不仅涉及页面切换,还包括了向页面传递参数和获取查询参数,这篇文章主要介绍了Vue路由参数与查询参数传递,需要的朋友可以参考下
    2023-08-08
  • antd日期选择器禁止选择当天之前的时间操作

    antd日期选择器禁止选择当天之前的时间操作

    这篇文章主要介绍了antd日期选择器禁止选择当天之前的时间操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • vue 实现用户登录方式的切换功能

    vue 实现用户登录方式的切换功能

    这篇文章主要介绍了vue 实现用户登录方式的切换功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • vue实现弹窗引用另一个页面窗口

    vue实现弹窗引用另一个页面窗口

    这篇文章主要介绍了vue实现弹窗引用另一个页面窗口,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • 一文详细聊聊vue3的defineProps、defineEmits和defineExpose

    一文详细聊聊vue3的defineProps、defineEmits和defineExpose

    vue3官方文档defineProps和defineEmits都是只能在scriptsetup中使用的编译器宏,下面这篇文章主要给大家介绍了关于vue3的defineProps、defineEmits和defineExpose的相关资料,需要的朋友可以参考下
    2023-02-02
  • vue项目使用CDN引入的配置与易出错点

    vue项目使用CDN引入的配置与易出错点

    在日常开发过程中,为了减少最后打包出来的体积,我们会用到cdn引入一些比较大的库来解决,下面这篇文章主要给大家介绍了关于vue项目使用CDN引入的配置与易出错点的相关资料,需要的朋友可以参考下
    2022-05-05
  • vue v-for 点击当前行,获取当前行数据及event当前事件对象的操作

    vue v-for 点击当前行,获取当前行数据及event当前事件对象的操作

    这篇文章主要介绍了vue v-for 点击当前行,获取当前行数据及event当前事件对象的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • Vue替代vuex的存储库Pinia详细介绍

    Vue替代vuex的存储库Pinia详细介绍

    这篇文章主要介绍了Vue替代vuex的存储库Pinia,听说pinia与vue3更配,便开启了vue3的学习之路,pinia 和 vuex 具有相同的功效, 是 Vue 的存储库,它允许您跨组件/页面共享状态
    2022-09-09
  • 关于vue中计算属性computed的详细讲解

    关于vue中计算属性computed的详细讲解

    computed是vue的配置选项,它的值是一个对象,其中可定义多个计算属性,每个计算属性就是一个函数,下面这篇文章主要给大家介绍了关于vue中计算属性computed的详细讲解,需要的朋友可以参考下
    2022-07-07

最新评论