做项目中文本溢出显示省略号是一个非常常见的功能, 一般做法都是增加 css
样式并且鼠标悬浮后显示全部内容, 但有时候明明没有溢出, 悬浮也会显示内容, 所以我们需要做一点处理
这里是源码
这里我们主要使用 el-tooltip
这个组件来实现这个功能
封装思路:
- 通过
content
传入文本
- 通过
css
实现溢出显示省略号的样式
- 鼠标悬浮后, 判断
scrollWidth
是否超过 offsetWidth
, 如果超过, 显示 tooltip
, 否则设置 disabled
由于比较简单, 直接上代码了:
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
| <template> <el-tooltip class="text-ellipsis" v-bind="$attrs" :disabled="disabled" :content="content"> <div @mouseenter.stop="handleMouseEnter"> {{ content }} </div> </el-tooltip> </template>
<script> export default { name: 'TextEllipsis', props: { content: { type: String, default: '' } }, data() { return { disabled: true } }, methods: { handleMouseEnter(e) { const { scrollWidth, offsetWidth } = e.target this.disabled = scrollWidth <= offsetWidth } } } </script>
<style lang="less" scoped> .text-ellipsis { width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } </style>
|