首页 关于我们 成功案例 网络营销 电商设计 新闻中心 联系方式
QQ联系
电话联系
手机联系

如何利用Resize Observer监听元素尺寸的变化?

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

如何利用resize observer监听元素尺寸的变化?

当需要实时感知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 AI Surge Cloud

低代码数据分析平台,帮助企业快速交付深度数据

AI Surge Cloud 87 查看详情 AI Surge Cloud
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 Observer API 简洁高效,取代了过去依赖 window.resize 或 scroll 事件的笨拙方式,特别适合监听任意元素的实际内容区域变化。

以上就是如何利用Resize Observer监听元素尺寸的变化?的详细内容,更多请关注其它相关文章!


# css  # vue  # react  # javascript  # java  # js  # echarts  # win  # 响应式布局  # 重绘  # canva  # 复选框  # 多个  # 自定义  # 容器内  # 拖拽  # 是一个  # 适用于  # 相关文章  # 中文网  # 解决问题  # 周到的福州seo公司  # 闽清有效的seo优化  # 利于seo的文章  # seo关键词排名竞价  # 北京网站收录优化  # 南沙网站建设优化  # 网站优化的好处和坏处  # 如何在本地做营销推广  # 做推广的的网站模板  # 荔湾高端网站建设电话