• JS动画和CSS3 animation动画的区别和特点


    CSS3动画

    CSS3优点

    1. 浏览器可以对CSS3动画进行优化
      1.   浏览器使用与requestAnimationFrame 类似的机制,requestAnimationFrame 比起js中使用setTimeout、setInterval 优势在于requestAnimationFrame 会把每一帧中的所有DOM操作集中起来,在一次重绘或会流中就完成,并且重绘或回流的时间间隔紧紧跟随浏览器的刷新频率,一般来说这个频率为60帧每秒。
      2. 在隐藏或不可见的元素中requestAnimationFrame 不会进行重绘或回流,这就意味着更少的cpu、gpu和内存使用。
    2. CSS3 动画强制使用硬件加速,通过gpu来提高动画性能。
    3. 对于帧速表现不好的低版本浏览器,CSS3可以做到自然降级,而JS则需要撰写额外的代码实现。
    4. CSS动画性能优化方向固定。

    CSS3缺点

    1. 运行过程控制较弱,无法添加事件绑定回调函数。CSS3动画只能暂停,不能在动画中寻找一个特定的时间点,不能在半路反转动画,不能变换时间尺度,不能在特定的位置添加回调函数或是绑定回放事件,无进度报告。
    2. 代码冗长,想用CSS实现稍微复杂一点的动画,最后CSS代码会变得非常笨重复杂。

    JS动画

    JS动画优点:

    1. javascript动画控制能力很强,可以在动画播放过程中对动画进行控制,包括开始、暂停、回放、终止、取消都可以做到。
    2. 动画效果比CSS3动画丰富,有些动画效果,比如曲线运动、冲击闪烁、视差滚动效果等等,只能使用javascript动画来实现。
    3. CSS3目前还有很多的兼容性问题,而JS大多时候都不存在兼容性问题。

    JS缺点:

    1. javascript在浏览器的主线程中运行,而主线程中通常还有其他需要运行的javascript脚本、样式计算、布局、绘制任务等等,都会对JS动画造成干扰,导致现成出现阻塞、从而导致丢帧的情况。
    2. 代码的复杂程度要高于CSS动画。

    总结:

      如果动画只是简单的状态切换,不需要过程控制,此时CSS动画是优选方案,因为他可以让你讲动画逻辑放在样式文件中,而不会让你的页面充斥javascript库。而如果设计比较复杂的动画效果,并且需要过程控制不可控因素,那么使用JS是优先的选择。

  • 相关阅读:
    机器学习笔记之K近邻算法
    [C++基础]在子类中向父类的构造函数传递参数的小例子,包括类中常量的初始化
    POJ2709 染料贪心
    POJ2337 欧拉路径字典序输出
    POJ2337 欧拉路径字典序输出
    POJ1042 贪心钓鱼
    POJ3228二分最大流
    POJ3228二分最大流
    POJ3498最大流,枚举终点,企鹅,基础最大流
    POJ3498最大流,枚举终点,企鹅,基础最大流
  • 原文地址:https://www.cnblogs.com/littleppig/p/13378051.html
Copyright © 2020-2023  润新知