Animations

命令式

JavaScript Animations

显式调用动画函数

 

  • jQuery.animate
  • Velocity.js
  • setInterval()
  • 动画与应用写在一起,不易维护
  • 可进行精细控制:物理模拟等
  • 在js线程上需要大量计算

声明式

CSS3 Animations

通过切换Class控制状态

 

  • CSS3 Animation
  • CSS3 Transition
  • 动画与应用分离,易维护
  • 受限于cubic-bezier 曲线或 keyframes
  • 计算消耗小
  • 可满足基本动画效果
  • GPU硬件加速!

基于帧的动画算法(Frame-based)

http://jsbin.com/remako/edit?js,console,output

  • 使用浏览器的定时器(setInterval/setTimeout)
  • 以一定时间间隔执行动画函数
  • 时间间隔决定FPS,当时间间隔为(1000/60)毫秒时,FPS为60
  • JS定时器存在精度问题
  • 性能问题,帧间隔不可控

常见需求:方块下移400像素,时长1秒

基于时间的动画算法(Time-based)

  • “弃帧保时”
  • 依然可以使用setInterval()/setTimeout()
  • 根据动画已进行时间计算进度,由进度决定动画状态
  • 终态处理
  • 保证时间准确

http://jsbin.com/lisixe/edit?js,console,output

requestAnimationFrame

http://jsbin.com/dakehe/edit?html,js,console,output

浏览器可以优化并行的动画动作,更合理的重新排列动作序列,并把能够合并的动作放在一个渲染周期内完成,从而呈现出更流畅的动画效果。

流动进度条的实现

 

利用绝对定位与background-position

柱体增高

打字效果:steps

.css3 .sec1 .typing-4 {
        visibility: visible;
        animation: typing-4 0.5s steps(4,end);
        -webkit-animation: typing-4 0.5s steps(4,end);
    }
    @keyframes typing-4 {
        from {width:0;}
    }
    @-webkit-keyframes typing-4 {
        from {width:0;}
}

http://designmodo.com/demo/stepscss/index.html      

设计稿按全屏做 1366*768、1920*1080

 

任务栏、菜单栏等占据一定高度

浏览器视口高度为屏幕高度减少100~200像素

 

提前沟通,防止内容区溢出

Made with Slides.com