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

简介: Vue中 引入使用 element-resize-detector 监听 Dom 元素 宽度、高度 变化

1. 前言

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

1ecd1b2606ed46e9956a89f231c9802c.png

安装及相关文档

npm i element-resize-detector

element-resize-detector npm 地址

image.png

注意事项

  • 如果元素具有 position:static,它将更改为 position:relative。因此,将应用任何无意的 top / right / bottom / left / z-index 样式,并且绝对定位的子项将相对于元素定位。
  • 隐藏元素将作为元素的直接子元素注入。

全局引入

// main.js (组件中按需引入方式,见2.使用方法中代码)
import ElementResizeDetectorMaker from "element-resize-detector";
Vue.prototype.$erd = ElementResizeDetectorMaker();

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() {
    cons 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>

20201204182323419.gif

相关文章
|
9月前
|
JavaScript API
vue使用hook:声明周期来监听子组件的声明周期
本文介绍了如何在Vue中使用生命周期钩子来监听子组件的生命周期事件,包括在子组件内部监听和在父组件中监听子组件的生命周期钩子。
99 0
|
10月前
|
JavaScript 开发者
[译] 监听第三方 Vue 组件的生命周期钩子
[译] 监听第三方 Vue 组件的生命周期钩子
|
9月前
|
JavaScript
在 Vue.js 中使用 watch 来监听对象属性的变化
在 Vue.js 中使用 watch 来监听对象属性的变化
|
8月前
|
JavaScript 索引
vue 在 v-for 时给每项元素绑定事件
在 Vue 中使用 v-for 渲染列表时,可以通过给每项元素绑定事件来实现交互功能。通常使用 `@click` 等事件修饰符,结合方法或内联表达式来处理事件。例如:`&lt;li v-for=&quot;item in items&quot; @click=&quot;handleClick(item)&quot;&gt;{{ item }}&lt;/li&gt;`。
|
8月前
|
缓存 JavaScript
|
8月前
|
JavaScript
vue3,使用watch监听props中的数据
【10月更文挑战第3天】
3171 2
|
10月前
|
JavaScript 前端开发
vue获取元素属性
vue获取元素属性
73 3
|
10月前
|
监控 JavaScript 前端开发
Vue3组合式函数(监听DOM尺寸 useResizeObserver)
本文介绍如何使用 `ResizeObserver` API 编写 Vue3 的通用组合式函数 `useResizeObserver`,该函数可方便地观察一个或多个元素的尺寸变化,并执行指定回调。`ResizeObserver` 接口用于监控 `Element` 或 `SVGElement` 的尺寸变化,避免了无限回调循环问题。
693 0
Vue3组合式函数(监听DOM尺寸 useResizeObserver)
|
9月前
|
开发框架 JavaScript 前端开发
手把手教你剖析vue响应式原理,监听数据不再迷茫
该文章深入剖析了Vue.js的响应式原理,特别是如何利用`Object.defineProperty()`来实现数据变化的监听,并探讨了其在异步接口数据处理中的应用。
|
10月前
|
前端开发 JavaScript
基于Vue3实现鼠标按下某个元素进行拖动,实时改变左侧或右侧元素的宽度,以及点击收起或展开的功能
本文介绍了如何在Vue3项目中实现一个鼠标拖动调整元素宽度的功能,并展示了点击按钮收起或展开侧边栏的效果,提供了完整的实现代码和操作演示。
1455 0
基于Vue3实现鼠标按下某个元素进行拖动,实时改变左侧或右侧元素的宽度,以及点击收起或展开的功能

热门文章

最新文章