vue单行文本溢出裁切省略号鼠标移入展示详细信息的功能

近期开发,遇到了个需求,要求内容超长时,不换行溢出裁切,显示省略号,鼠标移入时能看到他的详细信息

需求够简单,但如何判断内容是否有溢出裁切过,确成了知识盲点了

经百度调研,发现, 可以拿dom结构的clientWidth和scrollWidth进行对比,若前者小于后者,则说明有溢出裁切

因此:

方案1: 在鼠标移入(@mouseenter)时,拿到e.srcElement下的内容, 判断当  e.srcElement.clientWidth < e.srcElement.scrollWidth  时, 设置  e.srcElement.title = e.srcElement.innerHTML  即可

方案2: 通过自定义指令来操作

directives: {
    ellipsis: {
        inserted: function (el, binding) {
            el.style.overflow = "hidden"; // 样式赋值
            el.style.textOverflow = "ellipsis";
            el.style.whiteSpace = "nowrap";
            if (el.clientWidth < el.scrollWidth) { // 判断是否溢出裁切
              el.title = el.innerHTML;
            }
        },
    },
}

使用通过 v-ellipsis 来使用即可(注意别忘了溢出裁切需要限制宽度,在标签样式内赋值即可)

 

---- 注: 此处的显示全部信息是用的原生title提醒,样式可能略丑,有新要求的可以再此基础上进行调整

posted @ 2023-01-29 18:20  程序员笔记--vue  阅读(373)  评论(0编辑  收藏  举报