解决 mouseenter 和 mouseout 时,鼠标进入子组件造成 mouseout 触发而闪烁的问题

  • 1.需求背景
  • 2.核心解决方法
  • 3.两对鼠标事件的区别
    • (1)mouseover 和 mouseout
    • (2)mouseenter 和 mouseleave

1.需求背景

项目中,要对系统功能进行分类索引,所以简单设计了下,用了下面的处理方式。
div原样:

鼠标放到div块上时:

鼠标离开时,恢复原样:

需要做一个图标式的便签,当鼠标移动到div上时,div变大,并且显示具体条目,当鼠标离开时,恢复div的原样。本来是一个很简单的特效,网上例子也有很多,但是在将样式嵌入到代码中时,竟然出现了闪烁的问题。
开始时,使用的是 mouseenter 和 mouseout 事件。之前也发生过这样的现象,当时是使用 为 document 添加 mouseover 事件,然后根据组件在页面的范围进行判断,动态加载样式实现的。当时是使用的jquery,一切还好说,当前这个项目使用的是vue,如果还是那样做的话,岂不是打乱了vue的步伐。所以,就研究了下。

2.核心解决方法

使用 mouseenter 和 mouseleave 事件。
这两个事件是根据组件在页面上的范围进行计算的,只要在某个组件上添加了这两个事件,会计算鼠标的位置,只要在组件范围内,就可以触发。

3.两对鼠标事件的区别

(1)mouseover 和 mouseout

是根据鼠标事件的target进行触发的,是一种精确触发。当为某一组件(如div)设置这两个事件时,当事件的target是该组件时,就会触发mouseover,但是当鼠标划到该组件的子组件上时,因为target改变了,所以就触发了 mouseout 事件,这往往就会造成页面元素的闪烁。
而实际开发过程中,更多的是针对范围的操作。如果鼠标在某个组件(如div)范围内就触发进入组件的操作,如果离开这个组件的页面范围,就触发离开的事件。这就用到了下面的一对事件。

(2)mouseenter 和 mouseleave

mouseenter 和 mouseleave是根据组件在页面的范围(坐标)进行触发的。不管组件中是否有子组件,只要鼠标进入到组件的范围内,就可以触发mouseenter事件,离开范围,则触发mouseleave事件。这一对事件更适合这里的需求。

vue中解决 mouseenter 和 mouseout 时,鼠标进入子组件造成 mouseout 触发而闪烁的问题相关推荐

  1. vue中解决模糊搜索输入中文时--未输入完成时触发input事件

    在给输入框绑定input或keydown事件时 预期效果是有输入法时,输入中文后触发事件,不希望输一个字母就触发一次事件 可以用到compositionstart,compositionend. 主流 ...

  2. vue中解决时间在ios上显示NAN的问题

    vue中解决时间在ios上显示NAN的问题 参考文章: (1)vue中解决时间在ios上显示NAN的问题 (2)https://www.cnblogs.com/wzs5800/p/9580785.ht ...

  3. Vue中import引入模块路径时的@符号

    Vue中import引入模块路径时的@符号 1.ES6 模块主要有两个功能:export 和 import export:用户对外输出本模块(一个文件可以理解为一个模块,比如 aaa.js bbb.j ...

  4. vue中解决three.js出现内存泄漏丢失上下文问题

    vue中解决three.js出现内存泄漏丢失上下文问题 参考文章: (1)vue中解决three.js出现内存泄漏丢失上下文问题 (2)https://www.cnblogs.com/lichuank ...

  5. vue中echarts折线图双折线,鼠标悬浮时间,将两个X轴的内容以及Y轴的内容全部显示出来

    vue中echarts折线图双折线,鼠标悬浮时间,将两个X轴的内容以及Y轴的内容全部显示出来: 只要修改一个地方,用formatter方法 tooltip: {trigger: 'axis',axis ...

  6. vue中props传值给data时-props有值但data却是空的问题

    问题 设计vue组件时,常常有这样一个应用场景:父组件通过接口请求回来的数据传给子组件, 然后在子组件内部我们会用一个props来接收,并且将该props赋值给data里面的一个变量(便于我们后期对这 ...

  7. vue中的方法 methods 定义时不要使用箭头函数

    今天在vue中引入vuex的时候出现了错误,解决了一个多少时,总结如下: vuex 的使用: vuex就是一个状态管里中心 也好比一个仓库 细分可分为五个部分,这是我不考虑 module 分别是 st ...

  8. vue 点击事件传递多个参数_Vue子组件监听事件中传递参数的方法

    在子组件中,我们可以通过以下方式监听事件: v-on:click="$emit('funcName',a)" 如果需要传多个参数,可以通过以下方式: v-on:click=&quo ...

  9. vue 项目, 父组件中每次点击按钮重新加载子组件,(重新生成dom 元素)

    vue是组件化开发的项目,很多情况下会把公共组件提取出来,来减少代码量,提高开发效率,和以后更好的可维护性.很多情况下,父组件中都会引用子组件这种情况.通过给在父组件中引用的子组件标签上添加属性,来渲 ...

最新文章

  1. 影像组学视频学习笔记(7)-特征筛选之LASSO回归(代码)、Li‘s have a solution and plan.
  2. Maven环境下实现Web工程自动部署到Tomcat
  3. 设置IDEA中各种线条颜色
  4. 【解决方案】Windows10局域网内配置文件夹共享(附网络中没有找到的情况解决方案)
  5. ./configure,make,make install的作用
  6. 金山称清理专家遭微软误杀:正积极协商解决
  7. 软件工程讲义 3 两人合作(2) 要会做汉堡包
  8. VB小技巧:字符变量中双引号的输入
  9. Python的输出、判断、循环函数:Luogu1014Cantor表
  10. php操作剪贴板内容代码,查看剪贴板内容的方法
  11. 利用电脑玩android版天天连萌刷高分 二,利用电脑玩Android版“天天连萌”刷高分(二)——图像识别...
  12. fatal: unsafe repository (‘/home/anji/gopath/src/gateway‘ is owned by someone else)
  13. OpenCV-绘制圆角矩形
  14. 团队项目(3) -- 搭载于MSP430F6638_FFTB的仿《像素小鸟》小游戏
  15. Tensorboard远程连接
  16. 网站会员登录,注册设计
  17. 串口屏之------Usart GPU 使用手册
  18. 耦合中心游移和双权重因子的鲸鱼优化算法
  19. mysql面向用户是什么意思_原来大厂的MySQL面试会问这些问题!
  20. 绝对的开怀大笑-轻松一下

热门文章

  1. atrix 4g linux,超级手机:摩托罗拉Atrix 4G_摩托罗拉 MB861(Atrix 4G)_手机Android频道-中关村在线...
  2. java二叉树的深度_Java实现二叉树的深度计算
  3. 高手在交易中总结的期货
  4. 投资22亿元!迈瑞医疗深圳龙华基地开工,打造集团全球供应链总部 | 美通社头条...
  5. 【JVM虚拟机】JVM的启动参数设置
  6. c语言学习switch语句
  7. 二十八、信号量,事件,队列,生产消费者模型
  8. scss px转换rem
  9. Strategy Analytics称OPPO R9s最畅销
  10. javaweb项目Filter过滤器详解