实现一个内容超出显示省略号,并鼠标浮入显示tooltip,不超出的不显示tooltip组件
ps:该组件是基于element-plus,使用vue3最新的setup语法糖实现的。不清楚的大家可以根据我的思路用其他技术栈实现。
背景
项目中有很多地方有超出显示省略号,然后鼠标浮入显示tooltip的需求。在这之前,我发现项目中有些是鼠标浮入都显示tooltip,无关乎是否超出;还有一些甚至超出显示省略号,而没有加tooltip,也就是这种情况用户连完整信息都不清楚。我感觉这应该不是产品想要的效果,可能是之前需求太多,或者这个项目经手的人太多,导致没有注意到这种细微的功能。然后我趁着这版本迭代的空闲期整理了一下,找产品挨个对了一下,想统一和完善项目中这种功能。项目主要的技术栈是vue2,在项目中封装了一个组件。在这里,我想着用vue3+element-plus实现,来给大家整理思路,以及巩固和学习一下vue3新setup语法糖。
功能点
- 超出显示省略号
- 显示省略号的情况下,鼠标移入显示全部
- 考虑不是纯文本的情况,即可自定义内容区
- 考虑tooltip显示的内容可自定义
实现
-
超出显示省略号
这个其实不用多说,我们直接用css来实现就好,就是常见老三样,加上宽度的限制。
<template>
<div class="content" :style="{width: props.width}">
{{props.content}}
div>
template>
<script setup lang="ts">
interface props {
content: string,
width: string
}
const props = withDefaults(defineProps<props>(), {
content: '',
width: ''
})
script>
<style>
.content {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis
}
style>
现在这样就实现了超出显示省略号。我们来调用看看效果:

组件调用代码
<script setup lang="ts">