Vue——全局element-resize-detector监听DOM元素

相信很多用ele做pc端平台的很多小伙伴都遇到过这样一个问题,就是在做侧边栏菜单时,会有一个收缩和展开的一个功能。

这就导致了一个问题,那就是在我门伸缩的过程中。右边的主题页面的宽度就会随之改变。

我上网查了查 ,也动手试了试这个 window.onresize = ()=>{}。却不尽人意,因为

他只能检测浏览器大小的变化,完全跟我们的需求不沾边。经过我的不屑怒力,

终于找到了解决的方法。

这是我所看到的原创作者的分享:

https://shentuzhigang.blog.csdn.net/article/details/107881057

第一步 通过npm install element-resize-detector获取elementResizeDetectorMaker

npm install element-resize-detector

第二步:将依赖引入import elementResizeDetectorMaker from ‘element-resize-detector’ (main.js中)

import ElementResizeDetectorMaker from "element-resize-detector"
Vue.prototype.$erd = ElementResizeDetectorMaker()

第三步:使用(这里的东西是不完整的旨在能让你们看懂)

<template>
  <div class="index">
    <div class="left"></div>
    <div class="right" :style="
        'width:calc(100% - (' +
        width +
        'px));height:' +
        height +
        'px'
      "></div> 
  </div>
</template>

<script>
export default {
  data() {
    return {
      width: "",
      height: "",
    };
  },
  mounted() {
    this.$erd.listenTo(document.querySelector(".left"), (element) => {
      this.width = element.offsetWidth;
      this.height = element.offsetHeight;
      // 这里就能随时打印出来.left的宽和高了
      console.log('width'+this.width,'height'+this.height)  
    });
  },
};
</script>

<style>
</style>

以上就是element-resize-detector的引入和监听了
如果这篇文章对你有帮助,或者在进行中遇到其他问题,欢迎评论区留言出来。
我们一起探讨~

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容