用 IntersectionObserver 替代 scroll 事件做懒加载和曝光统计
页面里做图片懒加载、模块曝光统计、无限滚动,很多人第一反应还是监听 scroll 事件,在回调里不断 getBoundingClientRect() 判断元素是否进入视口。这种写法能跑,但在长列表或者低端设备上很容易掉帧,因为 scroll 回调触发极其频繁,而每次读取布局信息都会强迫浏览器重新计算样式和布局。IntersectionObserver 提供了一种由浏览器底层调度的观察机制,它不依赖主线程高频轮询,回调只在目标元素与视口(或指定根元素)的交叉状态跨越阈值时触发。这篇文章会从实际场景出发,讲清楚它的配置细节、跟 scroll 方案的本质区别、根元素和 rootMargin 的配合方...