el-tooltip根据条件控制显示,超出父级宽度展示提示词(多层循环情况)

文章讲述了如何在Vue.js应用中,利用el-tooltip组件并结合v-for指令在多层循环中实现内容的条件显示。通过调整isShowTooltip状态和动态绑定popper-class,以及在鼠标悬停事件中计算元素宽度来决定tooltip是否隐藏,同时使用CSS类隐藏超出父元素宽度的内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、el-tooltip根据条件控制显示(多层循环情况)

<div class="box" v-for="(item, index) in detailList" :key="index">
	<div class="title">
		<i class="el-icon-document"></i>
		<p>{{ item.elementName }}</p>
	</div>
	<el-row class="item" v-for="(cItem, cIndex) in item.children" :key="cIndex">
		<el-col :span="12">
			<div class="name">
				<el-tooltip effect="dark" :content="cItem.elementName" placement="bottom" :popper-class="isShowTooltip ? 'hide-tooltip' : ''">
					<span :class="`showMenuClass_${cItem.elementId}`" @mouseenter.stop.prevent="onMouseOver(cItem.elementId, 'name')" @mouseleave.stop.prevent="isShowTooltip = true">{{ cItem.elementName }}</span>
				</el-tooltip>
			</div>
		</el-col>
		<el-col :span="8">
			<span>
				{{ cItem.fundCount }}
			</span>
		</el-col>
		<el-col class="option" :span="4">
			<el-button>编辑</el-button>
		</el-col>
	</el-row>
</div>
setup() {
	const state = reactive({
		isShowTooltip: true,
		showMenuClass: '',
	})
	function onMouseOver(id: string) {
		state.isShowTooltip = true;
		let data = null;
		state.showMenuClass = `showMenuClass_${id}`; // 重点!!!
		data = $(`.${state.showMenuClass}`)[0];
		let parentWidth = (data.parentNode as any).offsetWidth;
		let contentWidth = data.offsetWidth;
		clearTimeout(timer);
		timer = setTimeout(() => {
			if (contentWidth > parentWidth) {
				state.isShowTooltip = false;
			}
		}, 300);
	}
}
.hide-tooltip {
	visibility: hidden !important;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值