vue 使用el-tooltip对内容显示不完整的部分悬浮框展示,但是显示完整的就不要悬浮框了,如何实现呢
时间: 2024-03-16 19:46:06 浏览: 104
可以通过判断内容是否超出元素宽度来实现,如果超出则使用 `el-tooltip` 显示悬浮框,否则不显示。
首先,使用 `ref` 属性给元素设置一个引用,方便后面获取元素的宽度。然后,在 `mounted` 钩子函数中,获取元素的宽度,并将其存储在一个变量中。
接着,在模板中使用 `v-if` 指令判断内容是否超出元素宽度。如果超出,则使用 `el-tooltip` 组件显示悬浮框,并将完整内容作为 `content` 属性传递进去。否则,直接显示内容。
下面是一个简单的示例代码:
```vue
<template>
<div ref="box">
{{ content }}
<el-tooltip v-if="isOver" :content="content" placement="top">
<span>{{ content }}</span>
</el-tooltip>
</div>
</template>
<script>
export default {
data() {
return {
content: '这是一段超出部分将要省略的内容',
isOver: false,
width: 0,
};
},
mounted() {
this.width = this.$refs.box.offsetWidth;
},
watch: {
content() {
this.isOver = this.$refs.box.scrollWidth > this.width;
},
},
};
</script>
<style>
div {
width: 200px;
height: 50px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
cursor: pointer;
}
</style>
```
在上面的示例代码中,`ref` 属性给 `div` 元素设置了一个引用 `box`。在 `mounted` 钩子函数中,使用 `$refs` 获取元素宽度,并将其存储在 `width` 变量中。在 `watch` 中,当 `content` 变化时,判断内容是否超出元素宽度,如果超出则将 `isOver` 设为 `true`,否则设为 `false`。在模板中,使用 `v-if` 判断 `isOver` 是否为 `true`,如果是,则使用 `el-tooltip` 显示悬浮框,否则直接显示内容。
阅读全文