VueUse useMouseInElement 鼠标hover事件,类似vue的 onMouseover 事件但是更强大,它会返回是否在某元素里面、鼠标位置、元素位置、宽高等信息。
<template>
<div>
<div ref="el">
鼠标移到这里试试看
</div>
<pre>{{mouse}}</pre>
</div>
</template>
<script setup lang="ts">
/*
vueuse 中文文档
https://www.itxst.com/vueuse/tutorial.html
*/
import { reactive, ref } from 'vue'
import { useMouseInElement } from '@vueuse/core'
//元素对象
const el = ref(null);
//响应式对象
const mouse = reactive(useMouseInElement(el))
// mouse对象结构
// {
// "x": 221, 鼠标x轴位置
// "y": 327, 鼠标y轴位置
// "sourceType": "mouse",
// "elementX": 190, 元素x轴位置
// "elementY": 296, 元素y轴位置
// "elementPositionX": 31, 鼠标在元素x轴位置
// "elementPositionY": 31, 鼠标在元素y轴位置
// "elementHeight": 62, 元素高度
// "elementWidth": 152, 元素宽度
// "isOutside": true true在元素外面 false在元素上面
// }
</script>
例子
也可以通过UseMouseInElement获取鼠标是否在元素上面
<template>
<UseMouseInElement v-slot="{ elementX, elementY, isOutside }">
x: {{ elementX }}
y: {{ elementY }}
Is Outside: {{ isOutside }}
</UseMouseInElement>
</template>
<script setup lang="ts">
//导入组件
import {UseMouseInElement} from '@vueuse/components'
</script>