Skip to content

浏览器回流和重绘

January 26, 2023 | 11:27 PM

浏览器回流和重绘

重溯=重绘 回流=重排

● 浏览器使用费流式布局模型 ● 浏览器会把HTML解析为DOM,CSS解析为CSSOM,两个组合在一起称为 render树

重溯/重绘

当CSS或JS改变时 浏览器重新渲染 但 不会改变任意一个盒子的布局
称为浏览器重溯 如 改变元素的背景颜色、visibility等CSS

回流/重排

当CSS或JS改变时 浏览器重新渲染 但 会改变每一个盒子的布局
称为浏览器回流 如 改变某一盒子大小、添加或删除某一元素等 重溯和回流的时机 浏览器有一个特殊队列 据估计每隔16ms左右 将队列中所有触发重溯和回流的操作一起执行 优化体验 部分操作一旦触发会立刻引起重溯或回流 如下:

这里要注意的是transform虽然会发生位移,但他是在合成之后才发生的,不会影响回流和重绘的过程,他只是你结果的变换。不涉及布局的变化,渲染流水线是这样的顺序:重排 -> 重绘 -> 合成。transform: translate是直接合成,跳过了前面的重排重绘。

实际开发中:

回流消耗的性能高于重溯

提升性能的方法:多重溯少回流

比如: