Skip to content

浏览器渲染原理

什么是 reflow?

reflow 的本质是重新计算 layout 树。

当进行了会影响布局树的操作后,需要重新计算布局树,会引发 layout。

为了避免连续的多次操作导致布局树反复计算,浏览器会合并这些操作,当 JS 代码全部完成后再进行统一计算。

所以,改动属性造成的 reflow 是异步完成的。

也同样是因为如此,当 JS 获取布局属性时,就可能造成无法获取到最新的布局信息。

浏览器再反复权衡下,最终决定获取属性立即 reflow。

什么是 repaint?

repaint 的本质就是重新根据分层信息计算了绘制指令。

当改动了可见样式后,就需要重新计算,会引发 repaint。

由于元素的布局信息也属于可见样式,所以 reflow 一定会引起 repaint。