您当前的位置: 首页 >  vue.js

彭世瑜

暂无认证

  • 3浏览

    0关注

    2791博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

vue.js:使用自定义指令监听元素尺寸变化(宽度、高度)

彭世瑜 发布时间:2022-06-08 15:14:28 ,浏览量:3

vue 自定义指令 文档: https://cn.vuejs.org/v2/guide/custom-directive.html

定义指令

import Vue from 'vue';

// 自动注册到全局
Vue.directive('resize', {
  bind(el, binding) {
    // el为绑定的元素,binding为绑定给指令的对象
    console.log(el, '绑定', binding);
    let width = '', height = '';

    function isReize() {
      const style = document.defaultView.getComputedStyle(el);
      if (width !== style.width || height !== style.height) {
        // 关键(这传入的是函数,所以执行此函数)
        binding.value({ width: style.width, height: style.height });
      }
      width = style.width;
      height = style.height;
    }

    el.__vueSetInterval__ = setInterval(isReize, 300);
  },

  unbind(el) {
    console.log(el, '解绑');
    clearInterval(el.__vueSetInterval__);
  }
});

使用

// src/main.js
// 引入指令
import '@/directives/resize.js';


handleResize({ width, height }) {
  console.log('handleResize', width, height);
}

参考 vue使用自定义指令监听元素宽、高变化

关注
打赏
1665367115
查看更多评论
立即登录/注册

微信扫码登录

0.1432s