<template>
<div>
<el-tooltip
class="box-item"
effect="dark"
:content="scope.row[prop]"
placement="top-start"
append-to=".m-table"
:teleported="true"
:disabled="isDisabled"
>
<div ref="text" :style="{ ...textStyle }" class="column-tooltip-text">
{{ scope.row[prop] }}
</div>
</el-tooltip>
</div>
</template>
<script lang="ts" setup>
import { onMounted, ref, nextTick } from "vue";
let props = defineProps(["label", "prop", "width", "align", "fixed", "scope"]);
let textStyle = ref();
let isDisabled = ref(false);
const text = ref(null);
const getStyle = (type = "init") => {
// @ts-ignore
let lineHeight = getComputedStyle(text.value).lineHeight.replace("px", "") - 0 || 23;
// @ts-ignore
let height = getComputedStyle(text.value).height.replace("px", "") - 0;
// console.log(lineHeight, height, props.scope.row[props.prop]);
if (type === "init") {
if (height > lineHeight) {
isDisabled.value = false;
textStyle.value = {
height: `${lineHeight}px`,
overflow: "hidden",
textOverflow: "ellipsis",
display: "-webkit-box",
webkitLineClamp: 1,
webkitBoxOrient: "vertical",
cursor: "pointer"
};
} else {
isDisabled.value = true;
textStyle.value = {
cursor: "text"
};
}
} else if (type === "update") {
if (height > lineHeight) {
isDisabled.value = false;
textStyle.value = {
height: `${lineHeight}px`,
overflow: "hidden",
textOverflow: "ellipsis",
display: "-webkit-box",
webkitLineClamp: 1,
webkitBoxOrient: "vertical",
cursor: "pointer"
};
}
}
};
onMounted(() => {
getStyle("init");
nextTick(() => {
setTimeout(() => {
getStyle("update");
}, 1000);
});
});
</script>
<style>
.m-table .column-tooltip-text {
word-break: break-all;
display: inline-block;
max-width: 100%;
}
</style>
人工智能学习网站
标签:text,value,height,let,一行,超出,lineHeight,文本,ref From: https://blog.csdn.net/xutongbao/article/details/139627809