详解Vue3中的鼠标事件mousemove、mouseover和mouseout

在这里插入图片描述

本文主要介绍Vue3中的常见鼠标事件mousemove、mouseover和mouseout。

下面是Vue 3中常用的鼠标事件mousemove、mouseover和mouseout的详解。

一、mousemove——鼠标移动事件

鼠标移动事件会在鼠标指针在元素内部移动时触发。通过在模板中绑定@mousemove来监听鼠标移动事件。

具体使用方法如下:

  1. 在模板中绑定@mousemove事件,并指定一个方法作为事件处理函数:
<template>
  <div @mousemove="handleMouseMove"></div>
</template>
  1. 在Vue实例中定义handleMouseMove方法来处理鼠标移动事件:
<script>
export default {
  methods: {
    handleMouseMove(event) {
      // 处理鼠标移动事件的逻辑
      console.log("鼠标移动了");
    },
  },
};
</script>

handleMouseMove方法中,可以通过event参数来获取关于鼠标移动事件的信息,例如鼠标的坐标等。

另外,Vue3还提供了@mousemove.stop修饰符,用于阻止事件继续传播。

<template>
  <div @mousemove.stop="handleMouseMove"></div>
</template>

这样,当鼠标在元素内部移动时,只会触发handleMouseMove方法,不会触发父元素的鼠标移动事件。

二、mouseover——鼠标移入事件

mouseover事件是指鼠标指针进入元素时触发的事件。通过在HTML模板中使用v-on指令来绑定mouseover事件。

示例代码如下:

<template>
  <div>
    <div @mouseover="handleMouseOver">鼠标悬停在这里</div>
  </div>
</template>

<script>
export default {
  methods: {
    handleMouseOver() {
      console.log('鼠标悬停在元素上');
    }
  }
}
</script>

在上面的示例中,在div元素上使用了@mouseover指令,将其绑定到一个名为handleMouseOver的方法上。当鼠标悬停在该元素上时,handleMouseOver方法会被调用,并输出一条信息。

需要注意的是,由于Vue 3使用了Composition API,可以将mouse事件与其他响应式数据和方法结合使用。例如,可以在handleMouseOver方法中修改data中的某个值来实现一些交互效果。

<template>
  <div>
    <div @mouseover="handleMouseOver">鼠标悬停在这里</div>
    <p v-if="isHovered">鼠标已经悬停在元素上</p>
  </div>
</template>

<script>
import { reactive } from 'vue';

export default {
  setup() {
    const data = reactive({
      isHovered: false
    });

    const handleMouseOver = () => {
      data.isHovered = true;
    };

    return {
      data,
      handleMouseOver
    }
  }
}
</script>

在上面的示例中,使用了reactive函数将data对象包装成响应式对象,并通过调用handleMouseOver方法来修改isHovered的值。根据isHovered的值,我们可以条件地渲染一个p元素。

这就是Vue 3中使用mouseover事件的基本介绍。

三、mouseout——鼠标移出事件

mouseout事件是鼠标指针从一个元素移出时触发的事件。它通常用于捕捉鼠标移出元素的操作,并执行相应的操作或逻辑。

使用v-on指令来监听mouseout事件。

下面是一个示例:

<template>
  <div @mouseout="handleMouseOut">鼠标移出我时触发事件</div>
</template>

<script>
export default {
  methods: {
    handleMouseOut() {
      console.log('鼠标移出了元素');
      // 执行其他操作或逻辑
    }
  }
}
</script>

在上面的示例中,当鼠标移出<div>元素时,handleMouseOut方法会被调用,并打印出一条消息。

需要注意的是,mouseout事件是冒泡事件,即其会从触发元素开始向上冒泡到最外层的父元素。如果需要阻止冒泡,可以使用event.stopPropagation()方法。

<template>
  <div @mouseout="handleMouseOutParent">
    <div @mouseout="handleMouseOutChild">子元素</div>
  </div>
</template>

<script>
export default {
  methods: {
    handleMouseOutChild() {
      console.log('鼠标移出了子元素');
    },
    handleMouseOutParent() {
      console.log('鼠标移出了父元素');
    }
  }
}
</script>

在上面的示例中,当鼠标从子元素移出时,会先触发子元素的mouseout事件,然后再触发父元素的mouseout事件。

Vue 3中的mouseout事件可以通过v-on指令来监听,并且可以在方法中执行相应的逻辑。它是一个冒泡事件,可以通过event.stopPropagation()方法阻止冒泡。

  • 72
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
引用\[1\]:在HTMLmouseenter、mouseleave、mouseovermouseout是鼠标事件的几种类型。它们之间的区别在于子元素的触发方式。mouseenter事件不支持事件冒泡,因此当鼠标进入或离开一个元素的子元素时,不会触发mouseenter和mouseleave事件,而是触发mouseovermouseout事件。\[1\]引用\[2\]:要模拟mouseenter事件,可以使用mouseover事件来代替。因为mouseover事件在鼠标进入元素时会触发,而且不会受到子元素的影响。\[2\]引用\[3\]:在Vue.js,可以使用@mouseenter、@mouseleave、@mouseover和@mouseout来绑定相应的事件处理函数。@mouseenter事件在鼠标进入元素时触发,@mouseleave事件在鼠标离开元素时触发,@mouseover事件在鼠标在元素上方移动时触发,@mouseout事件在鼠标离开元素时触发。\[3\] 所以,如果你想模拟mouseenter事件,可以使用@mouseover来代替。同样地,如果你想模拟mouseleave事件,可以使用@mouseout来代替。而@mouseover事件和@mouseout事件则可以直接使用。 #### 引用[.reference_title] - *1* *2* [js鼠标事件mouseovermouseenter和mouseleave、mouseout的区别](https://blog.csdn.net/JackieDYH/article/details/117234168)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Vue实现鼠标悬浮隐藏与显示图片效果 @mouseenter 和 @mouseleave事件](https://blog.csdn.net/Life_s/article/details/126770960)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

专业研究祖传Bug编写术

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

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

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

打赏作者

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

抵扣说明:

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

余额充值