当前位置:   article > 正文

Vue中 引入使用 element-resize-detector 监听 Dom 元素 宽度、高度 变化_element-resize-detectorr文档

element-resize-detectorr文档

1. 前言

很多做pc端平台的小伙伴都遇到过这样一个问题:在做侧边栏菜单时会有一个收缩和展开的一个功能,在伸缩的过程中右边的页面的宽度就会随之改变。我上网查了查 ,也动手试了试 window.onresize = ()=>{}。却不尽人意,因为它只能检测浏览器大小的变化,完全跟我们的需求不沾边。为解决类似此问题,我们可使用 element-resize-detector。

在这里插入图片描述

安装及相关文档
npm i element-resize-detector
  • 1

element-resize-detector npm 地址

API描述
listenTo(element, listener) or listenTo(options, element, listener)侦听用于调整大小事件的元素,并调用侦听器函数,将该元素作为调整大小事件中的参数。传递给函数的选项将覆盖实例选项。
removeListener(element, listener)从元素中移除侦听器。
removeAllListeners(element)从元素中删除所有侦听器,但不会完全删除检测器。如果您稍后可能添加侦听器,并且不希望检测器再次初始化,请使用此函数。
uninstall(element)完全删除检测器和所有侦听器。
initDocument(document)如果需要侦听另一个文档(如:iframe)中的元素,则需要使用此函数初始化该文档。否则,库将无法检测元素何时附加到文档。因此,对于 iframe,简单地调用 erd.initDocument( iframe.contentDocument );当 iframe 第一次安装在 DOM 上时。创建元素调整大小检测器实例的文档将自动初始化。注意:当 iframe 加载其内容时,会创建一个新文档。因此,对于 iframe,请确保为每个 onLoad iframe 事件调用此函数。

注意事项

  • 如果元素具有 position:static,它将更改为 position:relative。因此,将应用任何无意的 top / right / bottom / left / z-index 样式,并且绝对定位的子项将相对于元素定位。
  • 隐藏元素将作为元素的直接子元素注入。
全局引入
// main.js (组件中按需引入方式,见2.使用方法中代码)
import ElementResizeDetectorMaker from "element-resize-detector";
Vue.prototype.$erd = ElementResizeDetectorMaker();
  • 1
  • 2
  • 3

2. 使用方法

<template>
  <div class="wrap">
    <div 
      class="left" 
      :style="{width:`${leftWidth}`}">
      <button @click="changeWidth">changeWidth</button>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      leftWidth:'70%',
    };
  },
  methods:{
    changeWidth(){
      this.leftWidth == '70%' ? this.leftWidth = '50%' : this.leftWidth = '70%';
    },
  },
  mounted() {
    const elementResizeDetectorMaker = require("element-resize-detector");
    let erd = elementResizeDetectorMaker();
    erd.listenTo(document.querySelector(".left"), (ele) => {
      console.log(ele,ele.offsetWidth,ele.offsetHeight)
    });
  },
};
</script>

<style scoped lang="scss">
.left{
  height: 200px;
  background-color: pink;
}
</style>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/223104
推荐阅读
相关标签
  

闽ICP备14008679号