vue.js el-tooltip根据文字长度控制是否提示toolTip

49 篇文章 1 订阅
40 篇文章 0 订阅

一、需求:如何判断当前文本文字是否超出文本长度,是否需要出现提示toolTip。效果图如下:

二、实现:

1、表格字段鼠标放置el-popover出现 “引用主题” 的具体内容;

<!-- 表格字段:引用主题 -->
<el-table-column
  align="center"
  header-align="center"
  width="100"
  label="引用主题"
  sortable="custom"
  prop="refCnt"
  show-overflow-tooltip
>
<template slot-scope="scope">
    <span v-if="scope.row.refCnt == '0'" style="color: #f56c6c">0</span>
    <el-popover
      v-else
      placement="bottom"
      width="150"
      trigger="hover"
    >
    <ul :data="scope.row?.themeVos" class="ul-popover">
       <li v-for="(item, index) in scope.row?.themeVos" :key="index">
          <el-tooltip
            class="item"
            effect="light"
            :content="item?.themeName"
            placement="top-start"
            :disabled="!isShowTooltip"
         >
            <!-- visibilityChange:鼠标放置后是否展示省略部分;-->
            <!-- class="overflow":是否超出隐藏出现省略号; -->
            <div @mouseenter="visibilityChange($event)" class="overflow">
                {{ item?.themeName }}
            </div>
        </el-tooltip>
       </li>
     </ul>
     <span
        style="color: #1989fe; cursor: pointer"
        slot="reference"
     >
        {{ scope.row.refCnt }}
     </span>
    </el-popover>
  </template>
</el-table-column>

2、定义isShowTooltip控制是否展示提示文字tooltip;

data() {
    return {
        isShowTooltip: false, // 是否显示提示文字
    }
}

3、对应的鼠标放置触发的方法实现;

 // 是否提示toolTip
 visibilityChange(event) {
    const ev = event.target
    const ev_weight = ev.scrollWidth // 文本的实际宽度   scrollWidth:对象的实际内容的宽度,不包边线宽度,会随对象中内容超过可视区后而变大。
    const content_weight = ev.clientWidth // 文本的可视宽度 clientWidth:对象内容的可视区的宽度,不包滚动条等边线,会随对象显示大小的变化而改变。
    // const content_weight = this.$refs.tlp.$el.parentNode.clientWidth; // 文本容器宽度(父节点)
    if (ev_weight > content_weight) {
    // 实际宽度 > 可视宽度  文字溢出
        this.isShowTooltip =true
    } else {
        // 否则为不溢出
        this.isShowTooltip = false
    }
  },

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值