在 sf 上看到一个问题, js 是怎么实现持续的动画效果的? 第一时间想到的是定时器, 后来看到有答案提到了 requestAnimationFrame, 由于之前没有对相关方法有所了解, 于是便去查了下, 顺便也复习了下 animation 的使用.
animation(CSS)
兼容性与属性
猛戳这里查看兼容性
- animation-name: 动画名称
 - animation-duration: 动画时长
 - animation-timing-function: 动画执行方式
 - animation-delay: 动画延迟执行时间
 - animation-iteration-count: 动画执行次数
 - animation-direction: 是否反向执行动画
 - animation-fill-mode: 动画执行前后的样式
 
实例
1  | .box {  | 
1  | <div class="box"></div>  | 
requestAnimationFrame(JS)
兼容性与基本概念
猛戳这里查看兼容性
优势:
- 浏览器可以优化并行的动画动作,更合理的重新排列动作序列,并把能够合并的动作放在一个渲染周期内完成,从而呈现出更流畅的动画效果
 - 一旦页面不处于浏览器的当前标签,就会自动停止刷新。这就节省了CPU、GPU和电力
 
可以使用
cancelAnimationFrame清除动画
举例
1  | #anim {  | 
1  | <div id="anim"> Click here to start animation</div>  | 
1  | // 兼容性处理  |