----简单来说:重排负责元素的几何属性更新 ,而重绘负责元素的样式更新。
重排一定会引起重绘,重绘不一定引起重排。
重排概述:当 DOM 的变化引起了元素的几何属性发生变化,比如改变了元素的宽高,元素的位置等,导致浏览器不得不重新计算元素的几何属性,并重新构建渲染树,这个过程称为 **"重排"**,也叫**"回流"**。
重绘概述: 完成重排后,要将重新构建的渲染树渲染到屏幕上,这个过程就是**"重绘"**。
---- 会引起重排和重绘的一些操作:
浏览器在处理重排时,会递归处理DOM节点,所以导致重排的成本高于重绘。
罗列一些会引起重排的具体操作:
**1、调整窗口大小
2、字体大小
3、样式表变动
4、元素内容变化,尤其是输入控件
5、CSS伪类激活,在用户交互过程中发生
6、DOM操作,DOM元素增删、修改
7、width, clientWidth, scrollTop等布局宽高的计算**
重排和重绘是不可避免的,我们应该尽量减少它们的次数,把对浏览器影响的性能降到最低。
简单列出几条减少重排和重绘的建议:
1、合并样式修改
2、避免频繁操作DOM
3、避免频繁读取元素的几何属性
: 参考链接
https://zhuanlan.zhihu.com/p/342371522
https://zhuanlan.zhihu.com/p/35184404