前置知识

浏览器渲染机制

浏览器采用流式布局模型(Flow Based Layout)

浏览器会把 HTML 解析成 DOM,把 CSS 解析成 CSSOM,DOM 和 CSSOM 合并就产生了渲染树(Render Tree)。

有了 RenderTree,我们就知道了所有节点的样式,然后计算他们在页面上的大小和位置,最后把节点绘制到页面上。

由于浏览器使用流式布局,对 Render Tree 的计算通常只需要遍历一次就可以完成,但 table 及其内部元素除外,他们可能需要多次计算,通常要花3 倍于同等元素的时间,这也是为什么要避免使用 table 布局的原因之一。

怎么理解回流(重排)和重绘?什么场景下会触发?如何避免?