【发布时间】:2021-12-31 06:37:07
【问题描述】:
我的理解是,只要有一些 DOM 操作,例如插入 DOM 元素,就会触发重排,并且很可能会导致重绘。如果我错了,请纠正我。引用MDN Web Docs,
window.requestAnimationFrame() 方法告诉浏览器您希望执行动画,并请求浏览器调用指定函数在下一次重绘之前更新动画
在浏览器即将重绘之前调用 requestAnimationFrame (a.k.a. aAF) 回调。那么这是否意味着如果我们设法在这个 rAF 中进行 DOM 操作(编辑:并且还在最后排队另一个 rAF)每次都会触发回流并因此重新绘制,我们将陷入无限循环而没有实际渲染任何东西在屏幕上。
或者,一旦浏览器决定进行重绘,它会坚持下去,并在下一次重绘时应用 RAF 回调中发生的任何更新?
【问题讨论】:
-
如果您在 rAF 回调中进行 DOM 操作,将会有操作 → 重绘 → 操作 → 重绘 → 等等。JSConf talk by Jake Archibald 很好地解释了这一点。
-
哦,是的,我的错。在操作结束时,我正在排队另一个 rAF。在问题中错过了它。让我添加它。
标签: javascript dom repaint requestanimationframe reflow