css3动画优化

提升移动端CSS3动画体验的主要方法:

尽可能多的利用硬件能力,如使用3D变形来开启GPU加速

-webkit-transform: translate3d(0, 0, 0);
-moz-transform: translate3d(0, 0, 0);
-ms-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);   

如动画过程有闪烁(通常发生在动画开始的时候),可以尝试下面的Hack:

-webkit-backface-visibility: hidden;
-moz-backface-visibility: hidden;
-ms-backface-visibility: hidden;
backface-visibility: hidden;

-webkit-perspective: 1000;
-moz-perspective: 1000;
-ms-perspective: 1000;
perspective: 1000; 

注:3D变形会消耗更多的内存与功耗,应确实有性能问题时才去使用它,兼在权衡
如下面一个元素通过translate3d右移500px的动画流畅度会明显优于使用left属性:

#ball-1 {
  transition: -webkit-transform .5s ease;
  -webkit-transform: translate3d(0, 0, 0);
}
#ball-1.slidein {
  -webkit-transform: translate3d(500px, 0, 0);
}


#ball-2 {
  transition: left .5s ease;
  left: 0;
}
#ball-2.slidein {
  left: 500px;
}  

尽可能少的使用box-shadows与gradients

尽可能的让动画元素不在文档流中,以减少重排

position: fixed;  
position: absolute;   

position在做动画时,还是会用top,left值变换形成动画,但是在top,left变换时仍旧会重排,目前动画方面不会触发重排和重绘的只有opacity,transform