ResizeObserver监听元素大小的变化

简介: 文章介绍了如何使用`ResizeObserver`API来监听一个DOM元素大小的变化,并提供了示例代码,包括如何开始监听、停止监听以及处理元素大小变化的回调函数。

window.resize不适用于dom的监听。

ResizeObserver

ResizeObserver 接口监视 Element 内容盒边框盒或者 SVGElement 边界尺寸的变化。

方法

ResizeObserver.disconnect()
取消特定观察者目标上所有对 Element 的监听。

ResizeObserver.observe()
开始对指定 Element 的监听。

ResizeObserver.unobserve()
结束对指定 Element 的监听。

在页面挂载的时候进行某个dom的监听

const theResizeObserver = new ResizeObserver(this.handleResize);

theResizeObserver.observe(
  document.getElementsByClassName("leftSpanRightBoix")[0]
);

在页面销毁的时候取消监听

theResizeObserver.unobserve(
  document.getElementsByClassName("leftSpanRightBoix")[0]
);

// 该元素触发的回调函数

 handleResize = (dom) => {
   
     // 我自己的处理逻辑
     // ...
    const height = dom[0].contentRect.height;
    console.log(height, "aaa=========");
    if (height > 40) {
   
      !this.state.isShowLine &&
        this.setState({
   
          isShowLine: true,
        });
    } else {
   
      if (this.state.isShowLine !== false) {
   
        this.setState({
   
          isShowLine: false,
        });
      }
    }
  };

在这里插入图片描述
参考文档:https://developer.mozilla.org/zh-CN/docs/Web/API/Resize_Observer_API

目录
相关文章
|
5月前
|
小程序
在uniapp中监听globalData中的值变化
在uniapp中监听globalData中的值变化
266 0
|
5月前
|
JavaScript API
在Vue中,有哪些方法可以监听元素的状态变化?
在Vue中,有哪些方法可以监听元素的状态变化?
372 2
|
5月前
|
JavaScript
如何使用`watch`选项来监听特定属性的变化?
如何使用`watch`选项来监听特定属性的变化?
36 0
|
Web App开发 JavaScript API
监听Dom大小变化之ResizeObserver
在以前如果我们想要监听`dom`元素的大小变化,我们是没有对应的 api 可以使用的,在此之前我们都是只能监听浏览器窗口的大小变化,于是衍生出很多的 hack 方法,比如 resize 事件
975 0
|
JavaScript 开发者
使用 watch 监听文本框数据的变化|学习笔记
快速学习使用 watch 监听文本框数据的变化
1047 0
使用 watch 监听文本框数据的变化|学习笔记
|
JavaScript 开发者
使用watch监听文本框数据的变化|学习笔记
快速学习使用watch监听文本框数据的变化
122 0
使用watch监听文本框数据的变化|学习笔记
记一次无缝监听元素不可见时吸顶
记一次无缝监听元素不可见时吸顶
159 0
改变状态和改变指定回调顺序的方法
改变状态和改变指定回调顺序的方法
79 0
|
JavaScript 前端开发 API