前言
ResizeObserver
和 resize
事件是两种用于处理元素或窗口大小变化的机制,但它们有不同的使用场景和优缺点。
resize 事件
用途
- 监听浏览器窗口的大小变化。
使用方式
- 使用
window.addEventListener('resize', callback)
来添加监听器。 resize
事件是对整个窗口的响应,适用于当窗口大小变化时需要执行某些操作的情况。
示例
这里加入了防抖机制
1 | <head> |
优缺点
优点
- 简单易用,直接监听窗口大小变化。
- 适用于全局窗口的大小变化处理。
缺点
- 无法直接监听具体元素的大小变化。
- 可能会因为频繁触发而导致性能问题,特别是在调整窗口大小时。
ResizeObserver
用途
- 监听 DOM 元素的尺寸变化(例如,宽度和高度)。
使用方式
- 创建
ResizeObserver
实例并传入回调函数来处理元素大小的变化。 - 可以观察一个或多个 DOM 元素。
示例
1 | // 创建 ResizeObserver 实例 |
示例2
1 | document.addEventListener('ready', () => { |
优缺点
优点
- 可以直接监听具体元素的尺寸变化,而不仅仅是窗口的变化。
- 更加细粒度,能够处理多个元素的尺寸变化。
- 性能优化更好,因为
ResizeObserver
会聚合尺寸变化并异步通知回调。
缺点
- 可能对某些旧版浏览器不兼容(需要进行兼容性检查)。
- 需要额外的代码来处理多个元素的观察和停止观察等操作。
总结
resize
事件 适用于全局窗口尺寸的变化处理。ResizeObserver
适用于监控 DOM 元素的尺寸变化,提供了更精细的控制和性能优化。
选择哪种方式取决于你的需求。
如果你需要处理整个窗口的变化,可以使用 resize
事件;
如果你需要更细粒度的尺寸变化监控,ResizeObserver
是更合适的选择。