页面的重绘(repaint)与回流(reflow)

1. 回流(reflow)

当dom中render树中的节点或者元素的大小,边距,数量发生变化后,导致页面需要重新构建的过程叫做回流。另外如果浏览器获取某些元素属性也会触发回流,例如:offsetTop,offsetLeft等。

2. 重绘(repaint)

当dom中元素的属性,例如:颜色,字体样式等发生变化时,只需要更改该元素的时候叫做重绘。

3.回流的成本高于重绘

4.回流一定重绘,重绘不一定会回流

5.如何优化

1.避免单个修改节点样式,尽量一次性修改
2.使用DocumentFragment将需要多次修改的DOM元素缓存,修改好后一次性替换
3.将需要多次修改的DOM元素设置成display:none,修改完成后在改回来。
  4.避免读取上述的那些属性
  5.将复杂的dom节点脱离文档流。