使用 Vue3 自定义v-myLoading指令~

本文介绍了如何在Vue3中自定义v-myLoading指令,实现一个加载效果。通过创建loading组件,结合自定义指令的mounted和updated钩子,实现loading的显示和隐藏,确保其在目标元素内垂直水平居中。文章提供在线预览和完整源码,并解析了指令内部的工作原理。
摘要由CSDN通过智能技术生成

前言

什么是指令?

类似于v-model 或 v-show,这些是Vue 内置的一系列指令,那除了内置指令之外,Vue还允许我们自己注册自己所需要的指令。

今天就借助 v-loading 的效果来实现一个我们自己的 v-myLoading 吧!

效果

在线预览:Demo Show (chenyajun.fun)

不同尺寸的元素,都可以垂直水平居中

原理

自定义指令的相关知识可以去 Vue3 官方文档看一下:

自定义指令 | Vue.js (vuejs.org)

首先我们知道我们需要实现的是v-loading,那一个loading效果是什么样的呢?

可以清楚的看到,需要在目标区域垂直水平居中,并且使背景色为不完全透明的白色。

背景色好搞定,那如何使 loading 永远居中在目标容器内呢? 

我们知道,如果子元素使用绝对定位,并且父元素为非static定位的话,便可充当参照物,就可以通过定位将子元居中在目标区域内。

那接下来我们需要做的就是:

  1. 创建loading组件
  2. 找到目标元素,把 loading 组件添加进去。
  3. 为目标元素设置为参照物属性。
  4. 对 loading 状态进行开关控制。

实现

首先创建一个用于页面显示的loading组件,下面核心代码,在页面

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JacksonChen_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值