前端性能优化之回流和重绘

回流和重绘优化

  1. translate 替代 top 改变
  2. opacity 替代 visibility
  3. 不要一条一条的修改 DOM 的样式,预先定义好 class,然后修改 DOM 的 className
  4. 把 DOM 离线后修改,比如:先把 DOM 给 display:none(有一次 reflow),然后你修改 100 次,然后再把它显示出来
  5. 不要把 DOM 节点的属性值放在一个循环里面当成循环里的变量
  6. 不要使用 table 布局,可能一个很小的改动都会造成整个 table 的布局
  7. 动画实现的速度选择
  8. 对于动画新建图层
  9. 启用 GPU 硬件加速

Chrome 创建图层的的条件

图层的作用是让回流和重绘都在一个区域里进行,也就是硬件加速

  1. 3D 或透视变换(prespective transform)CSS 属性
  2. 使用加速视频解码的<video>节点
  3. 拥有 3D(webGL)上下文或加速的 2D 上下文的<canvas>节点
  4. 混合插件(如:flash)
  5. 对自己的 opacity 做 CSS 动画或使用动画 webkit 变换的元素
  6. 拥有加速 CSS 过滤器的元素
  7. 元素有一个包含复合层的后代节点(一个元素拥有一个子元素,该子元素在自己的层里)
  8. 元素有 z-index 较低且包含一个复合层的兄弟元素(换句话说就是该元素在复合层上面渲染)

Published under  on .

Last updated on .

pipihua

我是皮皮花,一个前后端通吃的前端攻城狮,如果感觉不错欢迎点击小心心♥(ˆ◡ˆԅ) star on GitHub!