元素内文字超长时显示...,并通过title提示全部文字

Posted OceanZH

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了元素内文字超长时显示...,并通过title提示全部文字相关的知识,希望对你有一定的参考价值。

思路:

鼠标移入时,通过比较元素的scrollWidthclientWidth来判断标签文字是否超长

若是超长,设置元素的title属性

在Vue中可以把逻辑抽取为自定义指令方便的使用


main.js:
// 注册一个全局自定义指令 `v-title`
Vue.directive(\'title\', {
  // 当被绑定的元素插入到 DOM 中时……
  inserted: function (el, binding) {
    let { value } = binding;
    el.addEventListener(\'mouseenter\', function(event) {
      console.log(\'el.scrollWidth \', el.scrollWidth)
      console.log(\'el.clientWidth \', el.clientWidth)
      if (el.scrollWidth > el.clientWidth) {
        el.title = value
      } else {
        el.title = \'\'
      }
    })
  },
})
yourComponent.vue:
<template>
<div class="item-label"
    v-title="item.name"
>
    {{ item.name }}
</div>
</tempalte>

<script>
export default {
    data() {
        return {
            item:{
                name: \'123\'
            }
        }
    }
}
</script>
css:
.item-label {
    display: block;
    max-width: 10em;
    overflow: hidden;
    text-overflow: ellipsis;
}

以上是关于元素内文字超长时显示...,并通过title提示全部文字的主要内容,如果未能解决你的问题,请参考以下文章

CSS 文字超长省略显示并隐藏超长部分

axure7.0如何实现光标在文本框中获得焦点时,文本框内容自动清空。失去焦点时显示默认文字,谢谢!

使用innerHTML在悬停时显示图像图例(不是工具提示)?

行盒子和嵌套元素

文字过长设置隐藏,鼠标hover时显示在title上

HTML title 属性