<template>
<a-tooltip v-if="isShowTooltip" placement="top" :get-popup-container="parentNode">
<template #title>
<span>{{ content }}</span>
</template>
<div class="content">
<span>{{ content }}</span>
</div>
</a-tooltip>
<div v-else class="content" @mouseenter="mouseEnter">
<span ref="contentRef">{{ content }}</span>
</div>
</template>
<script lang="ts" setup>
import { ref } from 'vue'
defineProps({
content: {
type: String,
default: '',
},
width: {
type: Number,
default: 100,
},
})
const contentRef = ref()
const isShowTooltip = ref<boolean>(false)
/**
* @description: 鼠标移入事件
*/
const mouseEnter = () => {
if (contentRef.value.parentNode.offsetWidth > contentRef.value.offsetWidth) {
isShowTooltip.value = false
} else {
isShowTooltip.value = true
}
}
/**
* @description: 处理滚动tooltip定位问题
* @param {HTMLElement} parentNode 节点属性
*/
const parentNode = (triggerNode: HTMLElement) => triggerNode.parentNode
</script>
<style scoped>
.content {
width: v-bind(width + 'px');
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
</style>
在页面中引入
import Tooltip from ‘@/components/Common/ToolTip.vue’ // 根据自己文件位置引入
<tooltip :content="text" :width="column.width" />