vue使用自定义指令监听组件宽高变化

本文介绍如何使用Vue指令`v-resize`,结合getComputedStyle进行元素尺寸监控,实现实时响应式布局调整。教程涵盖了本地注册指令、绑定元素及方法定义,适合前端开发者了解并应用到实际项目中。
摘要由CSDN通过智能技术生成

自定义指令代码

 directives: { // 使用局部注册指令的方式
    resize: { // 指令的名称
      bind (el, binding) { // el为绑定的元素,binding为绑定给指令的对象
        let width = ''
        let height = ''
        function isReize () {
          const style = document.defaultView.getComputedStyle(el)
          if (width !== style.width || height !== style.height) {
            binding.value() // 关键
          }
          width = style.width
          height = style.height
        }
        el.__vueSetInterval__ = setInterval(isReize, 300)
      },
      unbind (el) {
        clearInterval(el.__vueSetInterval__)
      }
    }

标签上使用:div
<div :class="[$options.name]" ref="databaseCon" v-resize="resize"></div>
在method中定义方法,通过原生window中的getComputedStyle获取元素的css样式属性:

window.getComputedStyle(el, null)[attribute]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值