Dan Callahan 的一篇很棒的介绍,介绍了为什么 IntersectionObserver
如此有用
无限滚动、延迟加载和在线广告有什么共同点?
它们需要了解页面上元素的可见性并对其做出反应!
不幸的是,传统上在 Web 上很难知道某个元素是否可见。 大多数解决方案监听滚动和调整大小事件,然后使用
getBoundingClientRect()
等 DOM API 手动计算元素相对于视窗的位置。 这通常有效,但效率低下,并且不考虑元素可见性发生变化的其他方式,例如大型图像最终加载到页面上方的位置,从而将其他所有内容向下推。
该 API 非常简单。