重绘(repaint)/回流(reflow)

117 阅读1分钟
  • 浏览器渲染原理

    • html代码会被解析成dom树,同时css代码会解析成css规则树
    • dom树和css规则树会组合成渲染树
    • 我们浏览器就会根据渲染树来进行绘制
  • 重绘 代码发生了变化只造成渲染树的改变,就会发生重新绘制,一般指是color,background-color

  • 回流 代码直接造成DOM树的改变,也间接导致渲染树重新绘制,一般指是尺寸相关,以及display

  • 重绘不一定会导致回流,回流一定会造成重绘

  • 如何减少重绘和回流

    • 当我们需要给DOM树上添加一堆的DOM节点的时候,可以用DocumentFragment www.cnblogs.com/echolun/p/1…
    • 如果你要改变多个属性,最好将这些属性定义在一个class中,直接修改class名,这样只用引起一次回流
    • 尽量让有动画的元素脱标(脱离文档流),避免对其他元素造成影响
    • 多使用一些CSS3属性比如像transform,因为这些属性会开启gpu硬件加速,不会导致回流