网页动画技术
最早 JS 通过 setTimeout()
或者 setInterval()
方法设置一个时间,来控制帧与帧之间的时间间隔。
然而,这两个方法是有弊端的:效果不够流畅且占用额外资源。
后来,有了一个 requestAnimationFrame()
,让浏览器决定最优帧速率
、选择绘制下一帧的最佳时机
。
参考几种不同的方法,汇总了如下的几个动画效果的技术:
- css3
- svg
- gif
- Flash
- canvas
- js 动画
canvas、webGL 只能算是一种绘图方式。他们的动画也都是通过 JS 修改参数来实现的。
很显然,我们不能将动画效果随手加于网页元素之上,然后期盼它能提升转化率。那太傻了。就像设计的所有其他方面,使用哪种动画,何时使用,这都需要仔细考虑。
从动画的交互效果来分:
- 等待动画
- 界面元素动画
- 讲故事的动画
- 纯装饰的动画
- 广告中的动画
- ......
正确使用运动感,可以告诉用户他们完成了某些操作。他们成功地与界面进行了交互,引发了某些变化。不管哪种动画,优先要注意动画对网页的性能有多大的影响!!
现行兼容性方案
1) 页面增强动画建议使用CSS动画
2) 复杂动画交互建议使用RAF及setInterval 或setTimeout优雅降级处理
3) 推荐动画库Velocity.js、GreenSock:
1) Velocity.js是一款动画切换的jQuery插件,它重新实现了jQuery的$.animate()方法从而加快动画切换的速度。Velocity.js只有7k的大小,它不仅包含了$.animate()的所有功能,并且还包含了颜色切换、转换(transform)、循环、缓动、CSS切换、Scroll功能,它是jQuery、 jQuery UI、CSS变换 在动画方面的最佳组合。
Velocity.js支持IE8+、Chrome、Firefox等浏览器,并支持Andriod以及IOS。
Velocity.js在内部实现中使用了jQuery的$.queue()方法,因此它比 jQuery的$.animate()、$.fade()、$.delay()方法更加流畅,其性能也高于CSS的animation属性。
2) GreenSock:GSAP v12平台
非常快的速度:性能是非常重要的,尤其是在移动设备上。GSAP不断优化,以保证互动项目的快速响应、高效率及平滑,你可以从这里查看动画效果测试。
异想天开的强劲:内置众多引擎的功能,如动画色彩、贝塞尔曲线、CSS样式属性、Flash滤镜、数组等等,定义不同的回调,可以通过帧或者秒定义运动。
兼容性:Flash,HTML5,jQuery,Canvas,CSS,新浏览器,旧浏览器,RequireJS,EaseIJS,移动设备等等-GSAP都可以很好的与他们兼容,你可以选择你熟悉的工具来使用。
Javascript,AS3/AS2:选择适合你的语言来完成动画。
轻量与可扩展性:模块化与插件式的结构保持了核心引擎的轻量,TweenLite包非常小(基本上低于7kb)。
没有依赖:GSAP没有基于第三方工具来构建(虽然它将jQuery作为选择器),因此能保证最短的加载时间与最大化性能。
高等序列:不用受限于线性序列,可以重叠动画序列,你可以通过精确时间控制,灵活地使用最少的代码实现动画。
良好的技术支持:可以通过论坛反馈,会有专家和资深活跃用户回答问题。
任何对象都可以实现动画:是的,任何,不用预定义的属性,任何对象的任意数字属性都可以实现动画,如果这些属性(如颜色,滤镜,非数值属性等)需要处理,插件可以实现。如果没有,我们可以实现一个。
重写管理:GSAP帮助防止动画引擎的冲突以及高级选项的设置。
易于学习:文档、教程、 示例、学习指南、论坛,还有很多学习资源,非常地丰富。
许可证:除商业用途意外,GSAP完全免费。