回流与重绘实际上是只重新触发浏览器渲染页面过程中的layout和paint两个步骤
注意:回流一定会触发重绘,而重绘不一定会回流,但我的理解是修改dom的样式则总会发生重绘

回流

实际上回流就是做layout的事情
layout实际上就是处理render tree,计算出来dom的具体位置大小等信息

重绘

实际上回流就是做paint的事情
paint就是做 据渲染树以及回流得到的几何信息,将页面画出来

优化原则

  1. 最简单的方式是减少修改dom的次数,即合并操作(class,合并样式后一并赋值)
  2. 因为回流一定会触发重绘,而重绘不一定会回流,所以优化的点就是尽量减少回流,而最简单的方式则是减少修改布局相关的的操作
  3. 减少读取dom的布局数据,浏览器自带样式修改的方法,存储定量的修改任务后一并执行渲染步骤,但每次读取dom的布局数据会使得浏览器执行渲染步骤
  4. 复杂操作脱离文档流
  5. css3硬件加速(transform/opacity等,过多占用内存)