• 【Vue3 Antdv】Ant Design Vue文字溢出鼠标滑上显示tooltip。不溢出,鼠标滑上不显示tooltip


    VUE3组件封装代码

    <template>
      <a-tooltip @mouseenter="showToolTip" v-bind="getBindValue">
        <template #title>
          {{ props.title }}
        </template>
        <slot><span>{{ props.title }}</span></slot>
      </a-tooltip>
    </template>
    
    <script setup>
    import {defineProps,computed,useAttrs} from "vue";
    
    const props = defineProps({
      title:{ //提示标题
        type:String,
        default:''
      }
    })
    
    /** 获取绑定属性 */
    const getBindValue = computed(() => {
      const delArr = ['title']  //需要过滤的属性
      const attrs = useAttrs()
      const obj = { ...attrs, ...props }
      for (const key in obj) {
        if (delArr.indexOf(key) !== -1) {
          delete obj[key]
        }
      }
      return obj
    })
    
    /** 不溢出不显示tooltip */
    const showToolTip = (e) => {
      const {clientWidth,scrollWidth} = e.target
      if (clientWidth >= scrollWidth) {
        e.target.style.pointerEvents = "none"; // 阻止鼠标事件
      }
    }
    </script>
    
    <style scoped>
    
    </style>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

    VUE3使用

    <template>
    	<ToolTip :title="text" placement="topLeft">
    		<span class="text">{{text}}</span>
    	</ToolTip>
    </template>
    
    <style>
    span.text{
      display: inline-block;
      width: 100%;
      /* 这是单行溢出显示...的样式 */
      overflow: hidden;
      text-overflow: ellipsis;
      white-space:nowrap;
    }
    </style>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    VUE2组件封装代码

    <template>
      <a-tooltip @mouseenter="showToolTip" v-bind="getBindValue">
        <template #title>
          {{ title }}
        </template>
        <slot><span class="text" :style="{maxWidth:maxWidth}">{{ title }}</span></slot>
      </a-tooltip>
    </template>
    
    <script>
    /**
     * @description 用于设置单行溢出隐藏的组件 不溢出不做提示
     * @params title:表格文本内容和鼠标悬停内容  maxWidth:最大宽度,超出此宽度隐藏多余文本显示...
    **/
    export default {
      name: "ToolTip",
      props: {
        title:{ //提示标题
          type:String,
          default:''
        },
        maxWidth:{  // 溢出隐藏的宽度
          type:String,
          default: '100%'
        }
      },
      computed:{
        /** 获取绑定属性 */
        getBindValue(){
          const delArr = ['title','maxWidth']  //需要过滤的属性
          const attrs = this.$attrs
          const obj = { ...attrs, ...this.$props }
          for (const key in obj) {
            if (delArr.indexOf(key) !== -1) {
              delete obj[key]
            }
          }
          return obj
        }
      },
      methods:{
        /** 不溢出不显示tooltip */
        showToolTip(e) {
          const {clientWidth,scrollWidth} = e.target
          if (clientWidth >= scrollWidth) {
            e.target.style.pointerEvents = "none"; // 阻止鼠标事件
          }
        }
      }
    }
    </script>
    <style scoped>
    span.text{
      display: block;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
    }
    </style>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60

    VUE2使用

    <ToolTip :title="text" placement="topLeft" />
    
    • 1
  • 相关阅读:
    【GNS3 GraduProj】SSH远程登录达成
    【数据结构与算法】<==>二叉树下
    历史新知网:寄快递寄个电脑显示器要多少钱?
    微信支付及支付回调
    C++参考好资源网址推荐
    Node.js C++ 层的任务管理
    使用nvm切换node方法,以及在nvm中的注意事项
    【Java】解决Java报错:IllegalArgumentException
    Dubbo—— 一个服务既是消费者又是提供者
    尚硅谷以太坊区块链学习之NFT智能合约(6)
  • 原文地址:https://blog.csdn.net/liulinet/article/details/133811212