讲几个vueuse的Elements模块里的实用方法

本文简介

点赞 + 关注 + 收藏 = 学会了

狠话放在前,如果你工作中用到 Vue ,求求你试一下 VueUse 吧~

VueUse 是专门为 Vue 打造的工具库,它提供了监听页面元素的各种行为、调用浏览器提供的蓝牙、定位、摄像头、连接游戏手柄等能力,适用于 Vue2Vue3

本文挑了几个 VueUseElements 的功能来玩,使用 Vue3 进行讲解。

安装 VueUse

使用以下命令可以将 VueUse 安装到你项目里。

npm i @vueuse/core

安装完,需要使用哪个工具就引入哪个工具。

```js import { useMouse } from '@vueuse/core'

const { x, y } = useMouse() ```

使用 Elements 模块的提供的工具

监听当前激活的元素 useActiveElement

使用 useActiveElement 可以监听当前激活的元素,比如选中的按钮、点击了输入框,这些操作都可以被监听到。

官网给出的Demo:

01.gif

我稍微简化了一下代码,使用了一个输入框和一个按钮来讲解。

要监听当前激活的元素需要做以下几步:

  1. 引入 useActiveElement
  2. 使用 useActiveElement

就这么简单😂

02.gif

```html

```

这里使用了 watch 监听 activeElement 的变化。可以打开控制台看看监听的结果。

HTML 元素上添加了 data-myid 属性,这中写法是 HTML5 新增的,data-* 可以自定义元素的属性。

我们可以在js里通过元素的 dataset 查看元素的自定义属性:

js // 省略部分代码 watch(activeElement, (el) => { console.log(el.dataset) })

03.png

当了解了 useActiveElement 的用法后,可以去看看官网的例子

监听页面是否可见 useDocumentVisibility

使用 useDocumentVisibility 可以监听页面是否可见。

它可以监听浏览器最小化、浏览器标签页切换。

04.gif

比如切换到别的标签页,控制台就会输出 hidden,切换回来就会输出 visible

useDocumentVisibility 的用法很简单,引入 -> 使用

```html

打开控制台查看吧:{{ visibility }}

```

我使用 watch 监听 visibility 的变化。你可以根据 visibility 的值去实现你的功能。

JS 里的 document 翻译成“页面”或许不太正确,叫“文档对象”比较恰当。但使用“文档对象”来讲解觉得怪怪的。大家能知道我想表达的内容就好~

监听页面是否聚焦 useWindowFocus

使用 useWindowFocus 可以监听页面是否聚焦。

和前面提到的 useDocumentVisibility 不同,useDocumentVisibility 是监听页面是否在屏幕上展示,就算切换了窗口,只要浏览器有一丁点位置在屏幕上展示的话,useDocumentVisibility 都会返回 visible

useWindowFocus 的能力可以粗暴的理解为 useDocumentVisibility 升级版。

useWindowFocus 可以监听当前焦点是否在页面上。

05.png

比如,当我鼠标点击到红色区域(浏览器页面区域)时,useWindowFocus 会返回 true

如果点击其他区域(比如蓝色区域或者点击桌面),useWindowFocus 会返回 false

useWindowFocus 的用法很简单,也是 引入 -> 使用

```html

窗口焦点:{{ focused }}

```

监听鼠标是否悬停在指定元素外 useMouseInElement

useMouseInElement 其实是监听鼠标和指定元素的参数变化。

因为前面讲解的内容偏向于页面可见、聚焦方面,而 useMouseInElement 可以监听鼠标有没有悬停在指定元素上。看上去和前面的章节有一点点联系吧,所以这节就起了这个标题。

06.gif

首先需要引入 useMouseInElement ,在使用时传入目标元素。

上代码

```html

雷猴

<div>在目标元素外:{{ isOutside }}</div>

```

useMouseInElement 除了可以监听鼠标是否悬停在元素上,还提供了其他功能。打开官方文档 可以看到支持的功能。

07.png

属性都比较简单,可以自己输出所有属性看看哪些用得上的。

监听元素位置、监听元素大小这些功能也很常用。

```js // 省略部分代码

const mouseInElementObj = useMouseInElement(target)

console.log(mouseInElementObj) ```

监听元素可见性 useElementVisibility

使用 useElementVisibility 可以监听元素的可见性。

它能监听元素:

  • CSS的 display 是否为 none
  • 元素是否在当前窗口(有滚动条的情况下,元素可能会出现在窗口外)。

08.gif

```html

雷猴
<button
  @click="toggle"
>toggle</button>

<!-- 占位元素,让页面产生滚动条 -->
<div
  style="height: 1000px;"
></div>

<!-- 在页面显示目标元素状态 -->
<div
  style="position: fixed; bottom: 0; right: 0"
>
  target是否可见:{{ targetIsVisible }}
</div>

```

需要注意:

  • targetIsVisible 无法监听 v-if
  • 使用 visibility: hidden;opacity: 0; 这些样式也无法监听。

监听元素宽高变化 useElementSize

使用 useElementSize 可以监听指定元素的宽高变化。

只要给 useElementSize 传入要监听的元素对象,它就会返回一个包含 widthheight 的对象给我们。

09.gif

```html

Height: {{ height }} Width: {{ width }}

```

在工作中,修改 canvas 容器宽高后通常需要刷新一下 canvas 里内容的尺寸或者位置,此时用 useElementSize 监听元素宽高变化就很方便了。

除了使用 useElementSize 监听元素宽高外,还可以使用前面提到的 useMouseInElement 进行监听。

累了,其他的方法以后再介绍吧~

点赞 + 关注 + 收藏 = 学会了

  • 14
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值