如何检测元素大小发生变化?

没有元素会无缘无故的发生变化,可能是窗口大小发生变化,我们可以监听window的resize事件;但很多情况是由于页面元素的变化(添加,删除)引起的,这种情况处理起来就比较麻烦了,大多数情况也是通过自定义事件来处理。

ResizeObserver提供了更直接的方法,直接监听元素的尺寸变化。

使用方式:

// 定义ResizeObserver对象,并设置监听方法
const myObserver = new ResizeObserver(entries => {
  // handleResize(entries)
})

const contentEle = document.querySelector('.content')
const staticEle = document.querySelector('p')

// 添加要监听的元素
myObserver.observe(staticEle)
myObserver.observe(contentEle)

监听方法参数是一个数组,每个数组对象为大小发生变化的元素:

image

由上图可以看到,每个对象都有targetcontentRect属性,其中contentRect属性又包括width, height, x, y, top, right, bottom, left。这和getBoundingClientRect非常类似。

在线示例:

See the Pen by (@justforuse) on CodePen.

由于是比较新的方法,所以兼容性很差:

Can I Use resizeobserver? Data on support for the resizeobserver feature across the major browsers from caniuse.com.

觉得作者写得不错?不妨轻击下方按钮~

赏点银子给楼主凑凑买咖啡喝吧
微信
支付宝
扫码打赏,建议金额1-10元

Copied From 畅言