Skip to content

useMouseInElement

与元素相关的反应式鼠标位置

¥Reactive mouse position related to an element

示例

Hover me
x: 0
y: 0
sourceType: null
elementX: 0
elementY: 0
elementPositionX: 0
elementPositionY: 0
elementHeight: 0
elementWidth: 0
isOutside: true

用法

¥Usage

vue
<script setup lang="ts">
import { 
useMouseInElement
} from '@vueuse/core'
import {
useTemplateRef
} from 'vue'
const
target
=
useTemplateRef
<HTMLDivElement>('target')
const {
x
,
y
,
isOutside
} =
useMouseInElement
(
target
)
</script> <template> <
div
ref
="
target
">
<
h1
>Hello world</
h1
>
</
div
>
</template>

组件用法

¥Component Usage

vue
<template>
  <UseMouseInElement v-slot="{ 
elementX
,
elementY
,
isOutside
}">
x: {{
elementX
}}
y: {{
elementY
}}
Is Outside: {{
isOutside
}}
</UseMouseInElement> </template>

指令用法

¥Directive Usage

vue
<script setup lang="ts">
import { 
vMouseInElement
} from '@vueuse/components'
import {
UseMouseSourceType
} from '@vueuse/core'
interface MouseInElementType {
x
: number
y
: number
sourceType
:
UseMouseSourceType
elementX
: number
elementY
: number
elementPositionX
: number
elementPositionY
: number
elementHeight
: number
elementWidth
: number
isOutside
: boolean
} const
options
= {
handleOutside
: true
} function
onMouseInElement
({
x
,
y
,
sourceType
,
elementX
,
elementY
,
elementPositionX
,
elementPositionY
,
elementHeight
,
elementWidth
,
isOutside
}: MouseInElementType) {
console
.
log
(
x
,
y
,
sourceType
,
elementX
,
elementY
,
elementPositionX
,
elementPositionY
,
elementHeight
,
elementWidth
,
isOutside
)
} </script> <template> <
textarea
v-mouse-in-elem
ent="
onMouseInElement
" />
<!-- with options --> <
textarea
v-mouse-in-elem
ent="
[
onMouseInElement
,
options
]
" />
</template>