vue3创建一个响应屏幕高度变化的全局指令

1.首先在vue的项目里创建一个文件,比如src文件夹下的utiles文件夹下新建一个directiveUtils.ts。

2.使用vue的directive函数自定义一个指令,里面内容如下:

export default function(app) {
  app.directive("fouce", {    // fouce是自定义指令的名称
    mounted(el, binding) {   // el指是你调用了该指令的dom结构本身,binging指的是你调用该指令时添加的参数
      el.style.height = document.documentElement.clientHeight * 0.1  // 返回节点高度为页面尺寸的10%
      window.addEventListener("resize", () => {   // 监听页面尺寸变化
        el.style.height = document.documentElement.clientHeight * 0.1
      })
    }
  })
}
注意:这里博主使用window.addEventListener而不使用window.onresize的原因是一个指令可能会在一个同一个页面多次使用,而window.onresize在同一个页面只能执行一次,而多次使用该指令的话需要把上一次指令的window.onresize给停止或者销毁了,否则会出现异常的情况,导致指令只会有一个起作用。

3.到主文件main.ts里面将指令注册进去。

import { createApp } from "vue"
import direcU from "./utils/directiveUtils"

const app = createApp(Application)

direcU(app)

app.mount("#app")

4.接下来全局的标签上都可以使用,加上前缀v-就OK了。

<div v-fouce></div>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值