

新闻资讯
技术学院Intersection Observer 是浏览器原生 API,用于高效监听元素与视口的交叉状态,实现懒加载;它无需手动计算位置、不阻塞主线程、支持异步回调及局部容器,性能优于 scroll 事件。
Intersection Observer 是浏览器原生提供的 API,专门用于监听目标元素与视口(或指定容器)的交叉状态变化。实现图片、组件或内容的懒加载时,它比传统的 scroll 事件监听更高效、更轻量。
传统方案常依赖监听 scroll 或 resize 事件,频繁触发重排重绘,还容易因节流/防抖设置不当导致加载延迟或卡顿。Intersection Observer 把这个过程交给浏览器底层调度,回调函数只在元素真正进入或离开阈值范围时执行,不阻塞主线程。
假设页面中图片使用 data-src 存放真实地址,src 先为空或占位图:
threshold: 0.1 表示元素 10% 进入视口就触发)isIntersecting,为真则加载图片并停止观察该元素data-src 的 调用 observer.observe(img)
代码片段示意:
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const img = entry.target;
img.src = img.dataset.src;
observer.unobserve(img); // 加载后停止观察,避免重复触发
}
});
}, { threshold: 0.1 });
document.querySelectorAll('img[data-src]').forEach(img => observer.observe(img));
Intersection Observer 不是“更好写的 scroll”,而是架构层面的升级:
持,配合简单降级(如 onload fallback)可覆盖绝大多数用户真正落地时,几个细节会影响体验和健壮性:
loading="lazy" 属性做双重保障(现代浏览器会自动处理原生懒加载)src,避免白屏风险