提升移动端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