Resize Observer 能高效监听DOM元素内容区域尺寸变化,适用于动态调整图表、响应式布局等场景,通过 observe 监听、unobserve 或 disconnect 停止,避免内存泄漏。

当需要实时感知DOM元素尺寸变化时,Resize Observer 是比事件监听或轮询更高效、更现代的解决方案。它能准确监听元素内容区域的变化,包括由JavaScript、CSS或响应式布局引发的改变,且不会触发重排或重绘。
创建一个 ResizeObserver 实例,并调用 observe 方法来监听目标元素:
const observer = new ResizeObserver(entries => {
for (let entry of entries) {
const { width, height } = entry.contentRect;
console.log(`宽度: ${width}, 高度: ${height}`);
}
});
// 开始监听某个元素
observer.observe(document.getElementById('myElement'));
entries 是一个列表,每个 entry 对应一个被监听元素的状态。contentRect 提供了当前的内容盒子尺寸(不包含 padding、border、margin)。
同一个观察者可以监听多个元素,回调中会区分不同元素的尺寸变化:
const observer = new ResizeObserver(entries => {
entries.forEach(entry => {
const target = entry.target;
const { width, height } = entry.contentRect;
console.log(`${target.id} 尺寸变化:${width} x ${height}`);
});
});
observer.observe(element1);
observer.observe(element2);
</font>当不再需要监听时,应调用 unobserve 或 disconnect 来释放资源:
// 停止监听特定元素 observer.unobserve(element1); // 完全断开所有监听 observer.disconnect();
在 Vue、React 等框架中使用时,建议在组件卸载时调用 disconnect,避免内存泄漏。
基本上就这些。Resize Observer API 简洁高效,取代了过去依赖 window.resize 或 scroll 事件的笨拙方式,特别适合监听任意元素的实际内容区域变化。
以上就是如何利用Resize Observer监听元素尺寸的变化?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号