重排
当dom的变化影响了元素的几何信息(位置),浏览器需要计算元素的几何属性,将其安放在界面中的正确位置,这个过程叫做重排,表现为重新生成布局,重新排列元素。
重绘
当一个元素(颜色、字体颜色)的外观被改变,但是没有改变布局,重新把元素外观绘制出来的过程叫做重绘,表现为某些元素的外观被改变。
重排和重绘会消耗浏览器的性能(会去计算浏览器的内存空间,占据cpu)会造成页面卡顿,UI展示迟缓。相比之下,重排性能影响更大,两者无法避免时最好选择重绘。
重绘不一定出现重排,但是重排一定出现重绘。
何时会触发重排和重绘?
1、添加、删除元素(重排)、更新节点(重绘)
2、通过display:none(重排)
3、通过visiblity:hidden(重绘)
4、添加动画(重排)
5、添加一个样式表(重排)
6、用户行为(重排或者重绘)