css3动画和js动画的比较

css实现动画:animation transition transform
js实现动画: setInterval setTimeout requestAnimationFrame

css动画:
优点:
1.集中所有DOM,一次重绘重排,刷新频率和浏览器刷新频率相同。
2.代码简单,方便调优
3.不可见元素不参与重排,节约cpu
4.可以使用硬件加速GPU(translateZ(0))
缺点:
1.对过程无法把控。无进度报告,无回调函数。
2.代码冗长。

JS动画:
优点:
1.效果炫酷。
2.过程控制。
缺点:
1.无法保证执行时间。timeout interval存在同步任务优先执行的问题。
2.最小粒度无法保证在16ms.

requestAnimationFrame的优点在于:
1.是浏览器针对动画提出的API。自动优化,页面不激活状态自动停止。
2.集中所有dom,一次重绘就完成,重绘事件跟随浏览器刷新频率。
3.隐藏或不可见元素,不进行重绘回流

你可能感兴趣的:(css3动画和js动画的比较)