Vue3 el-tooltip 根据内容控制宽度大小换行和并且内容太短不显示
vue
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
项目地址:https://gitcode.com/gh_mirrors/vu/vue
·
el-tooltip 根据长度自适应换行以及显隐
环境
vue: "3.2.37"
element-ui: "2.1.8"
要求
- tooltip 根据内容自动换行
- 如果内容超出显示省略号显示,不超出不显示 tooltip
代码
组件
// ContentTip 组件
<template>
<el-tooltip
v-bind="$attrs"
:content="content"
:disabled="showTooltip"
:append-to="toolDom"
:effect="effect"
:placement="placement"
>
<div ref="toolDom" @mouseover="onMouseOver(content)">
<slot />
</div>
</el-tooltip>
</template>
<script setup>
const toolDom = ref()
const showTooltip = ref(true)
const tooltipWidth = ref(0)
defineProps({
content: {
type: String,
default: ''
},
effect: {
type: String,
default: 'dark'
},
placement: {
type: String,
default: 'top'
}
})
function findParent(node) {
if (node.className === 'el-tooltip__trigger') {
return node
} else {
return findParent(node.parentNode)
}
}
function onMouseOver() {
const tag = toolDom.value
const parentWidth = findParent(tag).offsetWidth // 获取元素父级可视宽度
const contentWidth = tag.children[0].offsetWidth // 获取元素可视宽度
showTooltip.value = contentWidth < parentWidth
tooltipWidth.value = parentWidth + 'px'
}
</script>
<style lang="scss" scoped>
::v-deep .el-popper {
max-width: v-bind(tooltipWidth);
}
</style>
使用
<div style="width: 100px; overflow: hidden">
<tooltip :content="'我是內容很長的一個內容'">
<div class="text-ellipsis" style="max-width: fit-content">我是內容很長的一個內容</div>
</tooltip>
</div>
.text-ellipsis {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
效果


vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:4 个月前 )
9e887079
[skip ci] 1 年前
73486cb5
* chore: fix link broken
Signed-off-by: snoppy <michaleli@foxmail.com>
* Update packages/template-compiler/README.md [skip ci]
---------
Signed-off-by: snoppy <michaleli@foxmail.com>
Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 1 年前
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)