el-tooltip动态根据内容是否超出隐藏来进行显示

平常项目中经常出现文本内容过长需要处理成省略的形式,有一些需求要求hover时将隐藏后的文本全部显示出来,如果内容不长整好显示完整则不需要hover显示,这时需要组件进行特殊处理。

代码如下:

<template>
  <div class="tooltip-wrap">
    <el-tooltip
      ref="tlp"
      :content="text"
      effect="dark"
      :disabled="!tooltipFlag"
      :placement="placement"
      class="tooltip">
      <span :class="className" @mouseenter="visibilityChange($event)">{{text}}</span>
    </el-tooltip>
  </div>
</template>

<script>
export default {
  name: 'ellipsisTooltip',
  props: {
    text: { // 文本内容
      type: String,
      default: () => ''
    },
    className: {
      type: String,
      default: () => 'text'
    },
    placement: {
      type: String,
      default: () => 'top-start'
    }
  },
  data() {
    return {
      disabledTip: false,
      tooltipFlag: false
    }
  },
  mounted() {
  },
  methods: {
    visibilityChange(e) {
      const ev = e.target
      const evWidth = ev.offsetWidth
      const contentWidth = this.$refs.tlp.$el.parentNode.clientWidth
      this.tooltipFlag = contentWidth < evWidth
    }
  }
}
</script>

<style lang="scss" scoped>
  .tooltip-wrap{
    overflow: hidden;
    text-overflow: ellipsis;
    span{
      white-space: nowrap;
    }
  }
</style>

通过import引用并且创建该组件

import ellipsisTooltip from '@/components/ellipsisTooltip'
components: {
  ellipsisTooltip
}

 引用创建后的组件传入需要处理的文本内容即可,代码如下:

<span>
    <ellipsisTooltip text="内容" />
</span>

 

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值