js动画可以写自己的逻辑控制速度,大小等,css动画没有复杂的逻辑,https://www.apiref.com/css-zh/properties/animation/index.htm,这里有介绍。
理论上来说应该是css更快一点,但是css同样有它的问题,那就是浏览器支持的情况。由于动画是在css3才引入的,所以不支持css3的老式浏览器就不能完成动画,这里一般指的是ie9以前的浏览器。如果想兼容ie的老版本的话,还得要用js来实现。此外,js能够实现的动画更加丰富,css能够实现比较简单的动画。CSS3的动画的优点:1.在性能上会稍微好一些,浏览器会对CSS3的动画做一些优化(比如专门新建一个图层用来跑动画)
2.代码相对简单
但其缺点也很明显:
1.在动画控制上不够灵活
2.兼容性不好
3.部分动画功能无法实现(如滚动动画,视差滚动等)
JavaScript的动画正好弥补了这两个缺点,控制能力很强,可以单帧的控制、变换,同时写得好完全可以兼容IE6,并且功能强大。但想想CSS动画的transform矩阵是C++级的计算,必然要比javascript级的计算要快。另外对库的依赖也是一个很让人头疼的问题。
所以,对于一些复杂控制的动画,使用javascript会比较靠谱。而在实现一些小的交互动效的时候,就多考虑考虑CSS吧。