使用CSS3,我们可以很方便快捷的改变元素的宽度、高度,方位,角度,透明度等基本信息,但是这些不能满足我们的需求,而且浏览器对于CSS3的兼容性不好,所以这时候就需要拓展更多的js动画。
1.CSS3动画
1 |
|
有两个动画,class="animate"
,class="animate2"
第一种动画是:从左边(0%)到右边(700px)处,背景颜色从white变成red,并且来回变换两次(animation-iteration-count: 2
);
第二种动画是:id="move3"
元素从大小为50px,50px,变为200px,200px
2.JS动画
最基础的动画刚开始就是利用setTimeout
和setInterval
实现的。
1 |
|
startAnimate.js
1 | window.onload = function() { |
通过控制per的大小变化可以控制加减速,这里我们参照jquery.easing.js
的曲线函数
1 | function bounceOut(x) { |
使用很简单
1 | el.style.left = begin + easeSetting.easeInOutElastic(per) * distance + "px"; |
但是使用setInterval或setTimeout定时修改DOM、CSS实现动画比较消耗资源,照成页面比较卡顿,所以我们选择使用requestAnimationFrame
得到连贯的逐帧动画。
3.requestAnimationFrame
1 | function draw() { |
我们在上面的例子中去兼容所有的浏览器,但是这个还不是很完美,司徒正美给出了几个解决方案,点击这里进行查看。 requestAnimationFrame动画控制详解一文中也提供了几中解决方案,我把支持包括兼容ios6的例子写在这里,以供参考:
1 | // requestAnimationFrame polyfill by Erik Möller. |
4.动画库简单介绍
- css库 – animate.css
使用很简单,写在类名中即可
1 | <link rel="stylesheet" href="animate.min.css"> |
- js库velocity.js
1 | <script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.js"></script> |
参考阅读: