鼠标事件-关于mouse-xx的辨析

275 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第1天,点击查看活动详情

大家好!我是前端爬楼工程师🚹,一个野生程序员。好奇新技术,仰慕牛大佬。如果喜欢我的文章,可以关注➕点赞,为我注入能量,与我一同成长吧~

关于鼠标事件: 有这样几个成员:mousedownmouseupmouseentermouseleavemouseoutmouseovermousemove;另外的clickdbclick就不说了。

mousentermouseleave不支持冒泡。

mousedownmouseup

我们先来辨析这对兄弟:

  • mousedown: 用户按下任意鼠标键触发。
  • mouseup: 用户按释放任意鼠标键触发。 注意:这里是任意鼠标键(左键、右键、滚轮点击都算)

GIF.gif

由图可知:先点击parent,后点击childchild的事件出现了冒泡,同时触发了parent的事件。

mouseentermouseleave

  • mouseenter: 用户把鼠标光标从元素外部移到元素内部触发。
  • mouseleave: 用户把鼠标光标从当前元素内部移到元素外部触发。

GIF.gif

由图可知:先从parent外部移入内部,接着是child,然后从child内部移到外部。

mousemove

  • mousemove: 鼠标光标在元素上移动时反复触发。

GIF.gif

mouseoutmouseleave

  • mouseout: 把鼠标光标在从一个元素移到另外一个元素触发。移到的元素可以是子元素或外部元素。

GIF.gif

上图是mouseleave的效果

GIF.gif

上图是mouseout的效果

mouseleave的范围是当前元素外部,而mouseout的范围包括了当前元素的外部和子元素的内部。 所以mouseout功能更强一些。

mouseovermouseenter

  • mouseover: 用户把鼠标光标从元素外部移到元素内部触发。

GIF.gif

上图是mouseenter的效果

GIF.gif

上图是mouseover的效果

mouseenter比较单纯,进入当前元素的内部触发,而mouseover除了进入当前元素内部触发之外,由子元素到当前元素也会触发此事件。

总结一下: mouseout是mouseleave的增强版,mouseover是mouseenter的增加版。

那么mouseover和mouseout也是一对咯!

最后说下鼠标事件点击到释放执行顺序:

GIF.gif

好了!文章就到此结束了。

希望大家对鼠标事件有个更深的了解。