加载中...
Intersection Observer 是一个浏览器 API,用于异步监听目标元素与视口或祖先容器的交叉状态。它以高性能方式检测元素是否进入可视区域,常用于图片懒加载、无限滚动和曝光统计。

| 类型 | 浏览器观察器 API |
| 监听内容 | 元素交叉可见性 |
| 执行方式 | 异步 |
| 典型用途 | 懒加载、无限滚动 |
| 关键参数 | root、rootMargin、threshold |
交叉观察器(Intersection Observer) 是浏览器提供的一个用于异步监听元素可见性的 API。它能检测目标元素与视口或指定祖先容器之间的交叉比例变化,从而在元素进入或离开可视区域时触发回调。
传统上,判断一个元素是否进入视口需要在滚动事件中反复调用获取元素位置的方法,这会触发强制同步布局并造成性能瓶颈。Intersection Observer 将这一检测交由浏览器在合适时机异步完成,避免了频繁的主线程计算,显著提升了滚动流畅度。
该 API 是实现图片与组件懒加载的推荐方案,元素接近视口时才加载资源,节省带宽。它还广泛用于无限滚动列表(滚动到底部自动加载下一页)、广告与内容的曝光埋点统计、以及滚动到某区块时触发动画等交互效果。
问:它和监听滚动事件有什么区别?答:滚动监听是同步的,需要开发者自行计算位置且触发频繁;交叉观察器由浏览器异步调度,性能更好,代码也更简洁。
问:回调是实时触发的吗?答:不是严格实时,浏览器会在渲染流程的合适时机批量派发,存在极短延迟,但对绝大多数场景已足够。

| 类型 | 浏览器观察器 API |
| 监听内容 | 元素交叉可见性 |
| 执行方式 | 异步 |
| 典型用途 | 懒加载、无限滚动 |
| 关键参数 | root、rootMargin、threshold |
登录 后参与讨论
暂无讨论,来发表第一条评论吧