回流和重绘

1.什么是回流

回流(reflow)指的是当render tree中的一部分(或全部)因为元素的规模尺寸,布局,隐藏等改变而需要重新构建,即渲染树需要重新计算。
也就是说,回流是指DOM的变化影响到了元素的几何属性(宽和高),浏览器会重新计算元素的几何属性,会使渲染树中受到影响的部分失效,浏览器会验证DOM树上的所有其他节点的visibility属性,因此,回流是低效的。

  • 每个页面至少需要一次回流,就是在页面第一次加载的时候

2. 什么是重绘

在回流的时候,浏览器会使渲染树中受到影响的部分失效,并重新构造这部分渲染树,完成回流后,浏览器会重新绘制受影响的部分到屏幕中,该过程称为重绘。可以理解 在不影响 dom树的几何结构情况下的改变 就是重绘
例如:
display:none 不显示对应的元素,在文档布局中不再分配空间(回流+重绘)
visibility:hidden 隐藏对应元素,在文档布局中仍保留原来的空间(重绘)

因此我们可以得出一个结论 回流必然会出现重绘,重绘不一定会出现回流
如果回流的频率很高,CPU使用率会大大增加。一个元素的重排通常会带来一系列的反应,甚至触发整个文档的重排和重绘,性能代价是高昂的。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容