用 IntersectionObserver 替代滚动监听:更准、更省、更简单
页面里做懒加载、无限滚动、元素曝光埋点、吸顶导航切换时,很多项目第一反应还是给 window 挂一个 scroll 事件监听,在回调里用 getBoundingClientRect() 或者 offsetTop 判断元素是否进入视口。这个做法能跑,但代价不小:滚动事件触发频率极高,哪怕加了节流,每次回调仍然可能触发同步布局计算,导致样式重算和绘制排队;如果判断逻辑里读取了 offsetHeight、scrollTop 这类属性,还会造成强制同步布局。更麻烦的是,当页面里有多个滚动容器,或者元素在 iframe、嵌套 flex 布局中时,手写判断的边界条件很容易写错。IntersectionOb...