重绘与回流
- 重绘:当我们对 DOM 的修改导致了样式的变化、却并未影响其几何属性(比如修改了颜色或背景色)时,浏览器不需重新计算元素的几何属性、直接为该元素绘制新的样式(跳过了上图所示的回流环节)。
- 重排:当我们对 DOM 的修改引发了 DOM 几何尺寸的变化(比如修改元素的宽、高或隐藏元素等)时,浏览器需要重新计算元素的几何属性(其他元素的几何属性和位置也会因此受到影响),然后再将计算的结果绘制出来。这个过程就是重排
我们知道,当网页生成的时候,至少会渲染一次。在用户访问的过程中,还会不断重新渲染。重新渲染会重复重排+重绘或者只有重绘。 重排必定会发生重绘,重绘不一定会引发重排。重绘和重排会在我们设置节点样式时频繁出现,同时也会很大程度上影响性能。重排所需的成本比重绘高的多,改变父节点里的子节点很可能会导致父节点的一系列回流。
大约 2 分钟