一次尺寸读取为何可能让整帧动画错过刷新截止时间?
简答题困难777 次浏览
参考答案与解析
# 核心结论
一次尺寸读取可能让整帧动画错过截止时间,并不是因为读取一个数值天然很慢,而是因为它可能要求浏览器立即补做此前被延迟的样式计算和布局。如果代码先修改会影响几何结构的样式或节点,再读取 offsetWidth、offsetHeight、clientWidth、scrollTop 或调用 getBoundingClientRect(),浏览器为了返回最新且正确的结果,可能被迫同步刷新布局。若这种读写在循环或高频事件中反复交错,就会形成布局抖动,使原本可以合并执行的一次布局变成多次布局,最终超过单帧预算。
# 底层机制
页面更新通常可能经历样式计算、布局、绘制和合成,但浏览器会根据属性变化跳过
