• 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();
            }
          }
        }
    
    
  • 相关阅读:
    第一阶段-意见评论
    团队冲刺第15天
    团队冲刺第14天
    第十三周进度报告
    团队冲刺第13天
    团队冲刺第12天
    团队冲刺第11天
    SCRUM第二阶段第九天
    SCRUM第二阶段第八天
    SCRUM第二阶段第七天
  • 原文地址:https://www.cnblogs.com/panghu123/p/15045911.html
Copyright © 2020-2023  润新知