element ui 中在el-table内,当内容超过多少行时,显示el-tooltip

需求背景

最近来了一个需求,在一个el-table里边的某一列渲染一个 ‘介绍’ 的内容,由于内容过多,全部展示显示的不是很美观,所以就给定了个需求让超出两行后显示省略号,并在鼠标移上去之后显示全部内容。
我首先想到的就是使用el-tooltip来实现,但是在使用过程中试了很多方法,其中有些并不友好,最后选了一个本人认为相对合适的。
本文用来记录和学习,仅代表自己的观点,希望能帮助到别人,也希望大佬可以指正不足之处使我进步。
废话不多说,直接上代码。

实现过程

html:

<el-table-column label="介绍" prop="intro">
    <template slot-scope="scope">
        <p v-if="!scope.row.intro">-</p>
        <el-tooltip v-if="scope.row.intro" :disabled="showTip" effect="dark" :content="scope.row.intro" placement="top">
            <div class="designer-inner">
                 <div 
                    @mouseenter="showTips($event,scope.row)"
                    @mouseleave="hiddenShowTips($event,scope.row)" 
                    class="box-cont">
                    {{ scope.row.intro }}
                 </div>
             </div>
         </el-tooltip>
     </template>
</el-table-column>

在data里边定义好变量:

data: function () {
        return {
          showTip: true,//控制el-tooltip的禁用
        }
}

js:
接下来是js的部分,我的思路是获取文字内容容器的高度,当文字超过两行的高度时就进行相应的禁用或者启用el-tooltip(这里的高度可以根据自身的需求进行改变)。

showTips: function(el, row) {
    if (el.target.scrollHeight > 46) {  //这里我的两行高度为46,可以根据自身需求进行更改
        this.showTip = false;
    } else {
        this.showTip = true;
    }
},
hiddenShowTips: function(el, row) {
    this.showTip = true;
},

通过鼠标的划入和划出事件,获取文字容器,使用el-tooltip的disabled属性来巧妙的进行显示隐藏。
css:
最后通过css来实现省略号的显示。

.box-cont {
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2; //超过两行时显示省略号
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值