Vue实现Hover功能(mouseover与mouseenter的区别及说明)

211 阅读1分钟

原文: www.jb51.net/article/264…

仅供自己学习,

这篇文章主要介绍了Vue实现Hover功能(mouseover与mouseenter的区别及说明),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

目录

Vue实现Hover功能

mouseover 和 mouseenter 的区别

  • mouseover:当鼠标移入元素或其子元素都会触发事件,所以有一个重复触发,冒泡过程。对应的移除事件是 mouseout
  • mouseenter:当鼠标移入元素本身(不包含元素的子元素)会触发事件,也就是不会冒泡。对应的移除事件是 mouseleave
  • 通过图片进行分析 冒泡 情况

image.png

  • hover 事件调用顺序

mouseover -> mouseenter -> mousemove(hover进去之后移动会触发) -> mouseout -> mouseleave

案例

案例效果

temp.gif

案例代码

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556<template>``  ``<div``    ``class=``"hover-view"``    ``@mouseover=``"mouseover"``    ``@mouseenter=``"mouseenter"``    ``@mousemove=``"mousemove"``    ``@mouseout=``"mouseout"``    ``@mouseleave=``"mouseleave"``    ``@mousedown=``"mousedown"``    ``@mouseup=``"mouseup"``  ``>``  ``</div>``</template> <script>`` export ``default {``  ``methods: {``    ``// 1、进入元素``    ``mouseover () {``      ``console.log(``'mouseover'``)``    ``},``    ``// 2、进入元素``    ``mouseenter () {``      ``console.log(``'mouseenter'``)``    ``},``    ``// 3、移动``    ``mousemove () {``      ``console.log(``'mousemove'``)``    ``},``    ``// 4、离开元素``    ``mouseout () {``      ``console.log(``'mouseout'``)``    ``},``    ``// 5、离开元素``    ``mouseleave () {``      ``console.log(``'mouseleave'``)``    ``},``    ``// 6、鼠标在元素上 按下``    ``mousedown () {``      ``console.log(``'mousedown'``)``    ``},``    ``// 7、鼠标在元素上 抬起``    ``mouseup () {``      ``console.log(``'mouseup'``)``    ``}``  ``}``}``</script> <style>``.hover-view {``  ``width: 100px;``  ``height: 100px;``  ``background-color: red;``}``</style>

Vue hover的两个小技巧

第一个小技巧:导航栏的hover效果,一直存在

先使用this.$route.path获取当前路径,进行判断

第二个小技巧:鼠标移入移出效果

hoverIndex不能为0,因为第一个li的索引是0。也不能大于0

当鼠标移入的时候index === hoverIndex,当鼠标移出的时候把hoverIndex设置为-1就可以了