如何利用Resize Observer监听元素尺寸的变化?
发布时间:2025-10-19 10:51
发布者:网络
浏览次数:Resize Observer 能高效监听DOM元素内容区域尺寸变化,适用于动态调整图表、响应式布局等场景,通过 observe 监听、unobserve 或 disconnect 停止,避免内存泄漏。

当需要实时感知DOM元素尺寸变化时,Resize Observer 是比事件监听或轮询更高效、更现代的解决方案。它能准确监听元素内容区域的变化,包括由J*aScript、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)。
监听多个元素
同一个观察者可以监听多个元素,回调中会区分不同元素的尺寸变化:
AI Surge Cloud
低代码数据分析平台,帮助企业快速交付深度数据
87
查看详情
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 来释放资源:
- unobserve(element):停止监听指定元素
- disconnect():停止监听所有元素
// 停止监听特定元素 observer.unobserve(element1); // 完全断开所有监听 observer.disconnect();
在 Vue、React 等框架中使用时,建议在组件卸载时调用 disconnect,避免内存泄漏。
实际应用场景
- 动态调整图表 canvas 大小(如 ECharts、Chart.js)
- 响应式文本截断或字体自适应
- 实现容器内元素的自动布局切换
- 监控弹窗或面板的尺寸以重新定位浮层
基本上就这些。Resize Observ
er API 简洁高效,取代了过去依赖 window.resize 或 scroll 事件的笨拙方式,特别适合监听任意元素的实际内容区域变化。
以上就是如何利用Resize Observer监听元素尺寸的变化?的详细内容,更多请关注其它相关文章!
# css
# vue
# react
# javascript
# java
# js
# echarts
# win
# 响应式布局
# 重绘
# canva
# 复选框
# 多个
# 自定义
# 容器内
# 拖拽
# 是一个
# 适用于
# 相关文章
# 中文网
# 解决问题
# 周到的福州seo公司
# 闽清有效的seo优化
# 利于seo的文章
# seo关键词排名竞价
# 北京网站收录优化
# 南沙网站建设优化
# 网站优化的好处和坏处
# 如何在本地做营销推广
# 做推广的的网站模板
# 荔湾高端网站建设电话




