ResizeObserver相关介绍

ResizeObserver使用方法

ResizeObserver 是一个 JavaScript API,用于监视元素的大小变化。ResizeObserver 避免了通过回调函数调整大小时,通常创建的无限回调循环和循环依赖项。

构造函数ResizeObserver

ResizeObserver 构造函数创建一个新的 ResizeObserver 对象,它可以用于监听 Element 内容盒或边框盒或者 SVGElement 边界尺寸的大小。
用法:

new ResizeObserver(callback)

在监听元素大小调整时,调用callback函数。该函数接收两个参数:
一个是entries,是 一个 ResizeObserverEntry 对象数组,可以用于获取每个元素改变后的新尺寸。
另一个则是observer,对 ResizeObserver 自身的引用,因此需要它的时候,你要从回调函数的内部访问。例如,这可用于在达到特定的情况时,自动取消对观察者的监听,但如果你不需要它,可以省略它。

方法

官方给出的ResizeObserver方法主要有三个,分别是observe、unobserve以及disconnect,下面来说一说这三个方法:

  1. observe
    ResizeObserver是个构造函数。在使用new关键字调用构造函数,返回实例对象时,需要传入一个回调函数,这个回调用于监听实例对象某个DOM节点的变化,这时用到的就是observer。observer 将监听的盒模型。可能的值是:
    (1)content-box(默认) CSS 中定义的内容区域的大小。
    (2)border-box CSS 中定义的边框区域的大小。
    (3)device-pixel-content-box 在对元素或其祖先应用任何 CSS 转换之前,CSS 中定义的内容区域的大小,以设备像素为单位。
    用法如下:
observe(target)
observe(target, options)
  1. unobserver
    ResizeObserver 接口的 unobserve() 方法结束对指定的 Element 或 SVGElement 的监听。
    用法:
unobserve(target)
  1. disconnect
    ResizeObserver 接口的 disconnect() 方法取消所有的对 Element 或 SVGElement 目标的监听。
    用法:
disconnect()

注意

unobserve和disconnect还是有一定区别的,disconnect是取消对所有元素的监听,而unobserver取消的指定对象的监听。

示例

useEffect(() => {
	 const resizer = new ResizeObserver(() => div.resize()); //div部分就是ResizeObserverEntry 对象数组
	 resizer.observe(ref.current);   //observe方法是对指定元素的监听
	 return () => {
	   if (resizer) {
	     resizer.disconnect();  //取消对所有元素监听
	   }
	 };
}, [ref]);  // 当ref中内容改变时更新
  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值