4.5 Sensors -- useElementByPoint

4.5 Sensors – useElementByPoint

https://vueuse.org/core/useElementByPoint/

作用

根据鼠标位置,实时返回鼠标所在的dom元素。

官方示例

import { useElementByPoint, useMouse } from '@vueuse/core'

// useMouse 返回鼠标的实时位置
const { x, y } = useMouse({ type: 'client' })
// 根据坐标,返回最上层的dom元素
const { element } = useElementByPoint({ x, y })

示例中的背景颜色,是根据element的上下左右边距来绘制的。

源码分析

requestAnimationFrame回调中执行document?.elementFromPoint,获取坐标点最上层的元素。

https://developer.mozilla.org/zh-CN/docs/Web/API/Document/elementFromPoint

export function useElementByPoint(options: UseElementByPointOptions) {
  const element = ref<HTMLElement | null>(null)

  const { x, y, document = defaultDocument } = options

  /**
  * useRafFn:每次执行requestAnimationFrame,回调都执行一次。这个函数可以保证回调一定会执行。
  */ 
  const controls = useRafFn(() => {
    element.value = (document?.elementFromPoint(resolveUnref(x), resolveUnref(y)) || null) as HTMLElement | null
  })

  return {
    element,
    ...controls,
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值