vue3 项目 + element plus 实现 tips 点击后不显示。鼠标移入延迟显示(自定义时间)

需求:
结合element plus 中tooltip 实现 tips。
鼠标移入 1.5秒后显示,鼠标移出不显示,鼠标点击不显示

代码:

<el-tooltip
      content="消息通知"
      :virtual-ref="filledRef"
      v-model:visible="visible"
      virtual-triggering
     >
 </el-tooltip>
         //virtual-triggering	用来标识虚拟触发是否被启用
         //virtual-ref	表明 tooltip 绑定到哪个 html 元素
<div @mouseenter="vMouseenter()" @mouseleave="vMouseleave()" ref="filledRef" @click="visibleClick()">
     点击展示
</div>
import tipsUtils from '@/utils/toolTips'
import { defineComponent, Ref, ref } from 'vue';

export default defineComponent({
	setup(){
		const filledRef = ref(null)
    	const visible = ref(false) //默认设置不显示
    	const { vMouseenter, vMouseleave, visibleClick } = tipsUtils(visible)
    	//调用封装的事件
    	return {
      		filledRef,
      		visible,
      		vMouseenter,
      		vMouseleave,
      		visibleClick
    	};
	}
})

封装的事件
‘@/utils/toolTips’

import { Ref } from 'vue';
export default function tipsUtils(visible: Ref<boolean>) {
  let conSetTimeout: NodeJS.Timer | null = null;
  //鼠标移入
  const vMouseenter = () => {
    conSetTimeout && clearTimeout(conSetTimeout);
    conSetTimeout = setTimeout(function () {
      visible.value = true
      //通过改变 visible 去控制显示或者隐藏
    }, 1500);//通过延时器控制多久后显示
  }
  //鼠标移出
  const vMouseleave = () => {
    conSetTimeout && clearTimeout(conSetTimeout);
    //清除延时器
    clearTimeout(Number(conSetTimeout));
    visible.value = false
  }
  //鼠标点击
  const visibleClick = () => {
    conSetTimeout && clearTimeout(conSetTimeout);
    visible.value = false
  }
  return {
    vMouseenter,
    vMouseleave,
    visibleClick
  }
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王小王和他的小伙伴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值