ResizeObserver可高效监听DOM元素尺寸变化,通过observe()监听目标元素,contentRect获取内容区域尺寸,borderBoxSize获取含边框尺寸,支持unobserve()和disconnect()清理资源,适用于响应式组件等场景。

当需要实时感知 DOM 元素尺寸变化时,ResizeObserver 是比事件监听或轮询更高效、更现代的解决方案。它能监听元素内容区域或边框盒的变化,且不会触发重排或重绘,性能优秀。
使用 ResizeObserver 构造函数创建实例,调用 observe() 方法指定要监听的元素。
const observer = new ResizeObserver(entries => {
entries.forEach(entry => {
const { width, height } = entry.contentRect;
console.log('宽度:', width, '高度:', height);
});
});
// 监听某个元素
const targetElement = document.getElementById('myDiv');
observer.observe(targetElement);
entry.contentRect 提供的是 CSS 内容区域的尺寸(不包括边框和外边距),适合大多数场景。如果需要包含边框的尺寸,可以使用 borderBoxSize。
const observer = new ResizeObserver(entries => {
entries.forEach(entry => {
// 使用 borderBoxSize 获取包含边框的尺寸
const boxSize = entry.borderBoxSize[0];
console.log('包含边框的宽度:', boxSize.inlineSize);
console.log('包含边框的高度:', boxSize.blockSize);
});
});
为了避免内存泄漏,不再需要监听时应调用 unobserve() 或 disconnect() 方法。
立即学习“Java免费学习笔记(深入)”;
// 停止单个元素的监听
observer.unobserve(targetElement);
// 完全断开所有监听
observer.disconnect();
基本上就这些。ResizeObserver 特别适合用于响应式组件、图表容器、动态布局调整等场景,无需依赖窗口 resize 事件或定时检查尺寸。兼容性良好,主流浏览器均已支持。
以上就是如何利用 JavaScript 的 Resize Observer 监听元素尺寸的变化?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号