zoukankan      html  css  js  c++  java
  • 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是优先的选择。

  • 相关阅读:
    那些创业的艰辛整理
    一个成功的研发团队应具备的9大属性
    如何将 Linux 系统转移至 LVM 卷
    如何在 Linux 上永久挂载一个 Windows 共享
    怎样在 Chromebook 上安装 Linux 系统?
    1087 有多少不同的值 (20 分)C语言
    1052 卖个萌 (20 分)C语言
    1064 朋友数 (20 分)C语言
    1045 快速排序 (25 分)C语言
    1048 数字加密 (20 分)C语言
  • 原文地址:https://www.cnblogs.com/littleppig/p/13378051.html
Copyright © 2011-2022 走看看