1.reflow(回流)
当DOM的变化影响了元素的几何信息(比如元素的尺寸,位置),浏览器需要重新计算元素的几何属性,将其安放在界面的正确位置,这个过程叫做回流。回流也叫重排。
引起回流的方式:
1.页面初始化时,最消耗性能的一次回流;
2.删除或者添加可见的元素时;
3.元素的位置发生改变时;
4.元素的大小改变时(例如改变了元素的内外边距,宽高,边框大小);
5.元素的内容发生变化(字体、文字、图片更换);
6.改变浏览器窗口尺寸(例如 resize 事件发生时);
7.激活 CSS 伪类(例如 :hover);
8.设置 style 属性的值,因为通过设置 style 属性改变节点样式的话,每一次设置都会触发一次回流;
9.查询某些属性或调用某些计算方法:offsetWidth、offsetHeight 等,会触发回流,为了 “即时性” 和 “准确性” 。
2.重绘 (repaint)
当一个元素的外观发生变化,但没有改变布局,重新绘制元素外的过程,叫做重绘。
引起重绘的方式
1.可见性(visibility)和透明度(opacity)的改变;
2.颜色的改变;
3.背景的改变;
4.阴影、轮廓的改变;
5.文本方向(text-decoration)的改变等。