使用ResizeObserver监测元素尺寸变化

监测 DOM 元素的尺寸变化在许多场景中是必要的,比如响应式布局、动态调整元素大小等。传统的 window.resize 事件只能监测窗口尺寸变化,但无法直接跟踪某个具体 DOM 元素的大小变化。为此,JavaScript 提供了一个冷门却非常实用的 API ------ ResizeObserver。

什么是 ResizeObserver?

ResizeObserver API 允许你监听某个 DOM 元素的尺寸变化,并在变化时触发回调函数。这对于创建自适应布局、图表大小调整等场景非常有用。

基本用法

html 复制代码
<div id="resize-me" style="width: 200px; height: 200px; background-color: lightblue;">
  改变我的尺寸
</div>
javascript 复制代码
// 选择要观察的元素
const resizeElement = document.getElementById('resize-me');

// 创建 ResizeObserver 实例
const resizeObserver = new ResizeObserver(entries => {
  entries.forEach(entry => {
    console.log('元素尺寸变化:', entry.contentRect.width, entry.contentRect.height);
  });
});

// 开始观察元素
resizeObserver.observe(resizeElement);

// 模拟尺寸变化
setTimeout(() => {
  resizeElement.style.width = '400px';
  resizeElement.style.height = '400px';
}, 3000);

应用场景

  1. 自适应组件:当元素尺寸变化时动态调整内容或样式。
  2. 图表更新:随着容器大小改变,重新渲染图表以保持合适的比例。
  3. 文本换行处理:根据父元素的尺寸变化自动调整文本排版。

优势

  • 专门针对元素大小变化设计,比 window.resize 更加精确。
  • 支持多个元素的同时监控。
  • 不影响页面性能,避免了频繁的手动检查。

结语

ResizeObserver 是一个实用的 API,可以为你带来更高效的布局调整方式,特别是在响应式设计和动态组件中。


这两篇文章介绍了 IntersectionObserver 和 ResizeObserver,它们虽然不如一些常用的 API 那么广为人知,但在实际开发中非常有用。希望对你有所帮助!

相关推荐
m0_敲代码的彭于晏16818 分钟前
Vercel 前端部署平台深度评测
前端
怕浪猫2 小时前
外包和大厂的前端代码,差在凌晨三点
前端·面试·github
m0_敲代码的彭于晏1682 小时前
Vercel 前端部署与全栈开发实战指南
前端·状态模式
徐小夕2 小时前
花了3个月,我们做了一款 AI 版的“飞书文档”
前端·算法·github
贾伟康2 小时前
【化学实验室|17】HarmonyOS ArkTS 亮暗色与视觉令牌实战:集中颜色、间距和交互状态避免页面割裂
前端·移动开发·harmonyos·arkts·arkui
Csvn3 小时前
SSR/SSG/ISR(上):峡谷与渲染策略的时间预算
前端
Csvn3 小时前
SSR/SSG/ISR(下):可交互性、新鲜度与回源账
前端
酷炫码神4 小时前
Day 10|Pinia 状态管理:把散落在各组件的数据,收进一个全局仓库
android·开发语言·javascript
Elcker6 小时前
YnuoAgent(依诺):一个 npm 包,跑起属于自己的 AI 研发平台
前端·人工智能·npm
酷炫码神6 小时前
Day 8|Vue3 响应式:告别手动操作 DOM,让数据驱动界面
javascript·vue.js·ecmascript