zoukankan      html  css  js  c++  java
  • vue 监听页面 元素宽度和高度 变化 可以传参 自定义指令(局部)

    vue 监听页面 元素宽度和高度(我值监听了宽度) 变化

    插件安装 element-resize-detector

    
        npm install element-resize-detector
    
    

    引入插件

    要是有用饿了么UI框架的话,这个都不用引入
    <script>
    import elementResizeDetectorMaker from "element-resize-detector";
    </script>
    
    

    注册局部自定义指令

     ![](https://img2020.cnblogs.com/blog/1830100/202107/1830100-20210722191920382-1343319426.png)
    
    
     directives: {
        // 使用局部注册指令的方式
        resize: {
          // 指令的名称
          bind(el, binding, vnode) {
            // el为绑定的元素,binding为绑定给指令的对象
            let width = "";
            // let height = "";  这就是监听高度了
            let that = vnode.context;
            function isReize() {
              const style = document.defaultView.getComputedStyle(el);
              // if (width !== style.width||height !== style.height) {  这就是监听宽度和高度了
              if (width !== style.width) {
                // binding.value();  // 关键
                let pxNumber = style.width.split("px")[0];
                that[binding.arg](binding.value, pxNumber);
              }
              width = style.width;
              // height = style.height;  这就是监听宽度和高度了
            }
            el.__vueSetInterval__ = setInterval(isReize, 300);
          },
          unbind(el) {
            clearInterval(el.__vueSetInterval__);
          },
        },
      },
    
    

    行间绑定 (绑定要监听的元素)

    
    <div   v-resize:resize="{
                  className: index + 'titleContent',
                }"></div>
    
    

    事件操作 (元素宽度改变时执行的事件)

    
     /**
         * @description: 监听宽度的改变事件   自定义指令 CDMB0000212titleContent
         * @param {*} value
         * @param {*} width
         * @return {*}
         */
        resize(value, width) {
          //value 这个是传进来的参数的对象  //{className:"0000titleContent"}   上面的变量index值是0000
           // width是宽度的值 
          if (value && value.className) {
            if (width < 800) {
              //$("." + value.className).hide();
            } else {
              //$("." + value.className).show();
            }
          }
        }
    
    
  • 相关阅读:
    python中的内置函数的思维导图
    练习(面试题):关于生成器函数的求和问题
    推导式, 生成器表达式
    生成器
    静态代码块
    java中内存的划分
    静态方法
    Chapter07Scanner类、Random类、ArrayList类
    泛型
    对象数组
  • 原文地址:https://www.cnblogs.com/panghu123/p/15045911.html
Copyright © 2011-2022 走看看