html 监听后端变化_使用ResizeObserver 监听任意HTML元素尺寸变化

ResizeObserver 和 MutationObserver

https://developer.mozilla.org/zh-CN/docs/Web/API/ResizeObserver​developer.mozilla.org

ResizeObserver是新的实验中的API,可以通过构造一个 ResizeObserver 对象以观察者模式监听任意 Element / SvgElement 的尺寸变化。除了chrome 64+ 和最新的 Edge Insider版支持,其他浏览器均不支持此API。但有第三方的polyfill方案,可以支持到 FF44+,IE9+,Edge 10+ ,Safari 11+ ,兼容方案是通过 Mutation​Observer API 实现的,通过监听 dom 的变化并加以判断,至此主流浏览器均可运行。非轮询监控,所以不会造成性能问题。

que-etc/resize-observer-polyfill​github.com
8510bc4c3dce4e3d8f629cf90ea83120.png

安装和使用

npm:

npm install resize-observer-polyfill --save-dev

使用示例:

// 导入兼容模块
import ResizeObserver from 'resize-observer-polyfill';
const element1 = document.getElementById('div1');
const element2 = document.getElementById('div2');
/* 
 *  新建以一个观察者,传入一个当尺寸发生变化时的回调处理函数
 *  参数entries 是 ResizeObserverEntry 的数组,包含两个属性:
 *  ResizeObserverEntry.contentRect   包含尺寸信息(x,y,width,height,top,right,left,bottom)
 *  ResizeObserverEntry.target  目标对象,即当前观察到尺寸变化的对象
 *
 */
const robserver = new ResizeObserver( entries => {
  for (const entry of entries) {
     // 可以通过 判断 entry.target得知当前改变的 Element,分别进行处理。
     switch(etry.target){
       case element1 :
          entry.target.innerHTML = `第一个DIV尺寸 [${entry.contentRect.width} : ${entry.contentRect.height}]`;
       break;
       case element2 :
          entry.target.innerHTML = `第二个DIV尺寸 [${entry.contentRect.width} : ${entry.contentRect.height}]`;
       break;
     }
  }
});
robserver.observe(element1);
robserver.observe(element2);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值