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

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

目录

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

一、mousemove------鼠标移动事件

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

具体使用方法如下:

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

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

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

html 复制代码
<template>
  <div @mousemove.stop="handleMouseMove"></div>
</template>

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

二、mouseover------鼠标移入事件

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

示例代码如下:

html 复制代码
<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中的某个值来实现一些交互效果。

html 复制代码
<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事件。

下面是一个示例:

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

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

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

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

html 复制代码
<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()方法阻止冒泡。

相关推荐
香蕉可乐荷包蛋2 小时前
浅入ES5、ES6(ES2015)、ES2023(ES14)版本对比,及使用建议---ES6就够用(个人觉得)
前端·javascript·es6
未来之窗软件服务2 小时前
资源管理器必要性———仙盟创梦IDE
前端·javascript·ide·仙盟创梦ide
liuyang___3 小时前
第一次经历项目上线
前端·typescript
西哥写代码4 小时前
基于cornerstone3D的dicom影像浏览器 第十八章 自定义序列自动播放条
前端·javascript·vue
清风细雨_林木木4 小时前
Vue 中生成源码映射文件,配置 map
前端·javascript·vue.js
FungLeo4 小时前
node 后端和浏览器前端,有关 RSA 非对称加密的完整实践, 前后端匹配的代码演示
前端·非对称加密·rsa 加密·node 后端
雪芽蓝域zzs4 小时前
JavaScript splice() 方法
开发语言·javascript·ecmascript
不灭锦鲤4 小时前
xss-labs靶场第11-14关基础详解
前端·xss
不是吧这都有重名5 小时前
利用systemd启动部署在服务器上的web应用
运维·服务器·前端
霸王蟹5 小时前
React中巧妙使用异步组件Suspense优化页面性能。
前端·笔记·学习·react.js·前端框架