
Kissy动画模块的使用方法基本上与jQuery动画相差不了多少。除了提供jQuery动画所具有的功能外,Kissy在此之上又添加了不少有用的特性。假如你觉得jQuery动画满足不了你的需求,不妨试下Kissy的Anim模块。
CSS3中的transform可以让我们很容易地对元素进行平移、旋转、缩放等操作,然而浏览器前缀给我们的使用增加了诸多不便。在没有使用CSS预处理的情况下,每次@keyframes都必须写上几份着实让人感到厌烦。而且利用@keyframes控制动画在某些情况下也并不是那么合适。Kissy的Anim模块支持跨浏览器的css transform,不仅使用起来就跟其它属性变换一样简单,同时还能够使用CSS3的transition来提高动画性能。
new Anim('#object', {
'left': 555,
'transform': 'rotate(360deg)'
}, 0.5).run();
点击这里查看transform示例。
Kissy可以在动画过程中随时暂停并重新开始动画。假如你是在开发一个具有多种动画效果的复杂Web应用,这个功能将会派上很大的用场。
Node.one('#run').on('click', function () {
anim = new Anim('#object', {
'left': 555,
'transform': 'rotate(360deg)'
}, 5);
anim.run();
});
Node.one('#stop').on('click', function () {
anim.stop();
});
Node.one('#pause').on('click', function () {
anim.pause();
});
Node.one('#resume').on('click', function () {
anim.resume();
});
点击这里查看控制示例。
jQuery需要额外的插件才能够支持多种效果,而Anim模块本身就自带了多种效果,可取值:
swing | easeNone | linear | easeIn | easeOut
easeBoth | easeInStrong | easeOutStrong | easeBothStrong
elasticIn | elasticOut | elasticBoth | backIn
backOut | backBoth | bounceIn | bounceOut
bounceBoth | cubic-bezier(p1x, p1y, p2x, p2y)(所有取值必须在[0,1]之间)
点击这里查看各种平滑函数的实际使用效果。
什么是自定义动画呢?简单来说,就是你可以自行定义每个属性各自的变化效果,而不必全部都采用同一套方式。利用这个特性,你可以更加自由地控制动画的效果,比如下面这个,让透明度在0和1中进行改变,从而实现一闪一闪的效果:
new Anim('#object', {
'opacity': {
frame: function (anim, fx) {
var dom = anim.node,
opacity = dom.style.opacity;
if (opacity === '1') {
dom.style.opacity = 0;
} else {
dom.style.opacity = 1;
}
}
},
'left': {
value: 555,
easing: 'swing'
},
'transform': {
value: 'scale(0.01)',
easing: 'elasticBoth'
}
}, 5).run();
点击这里查看自定义动画的效果。
Anim模块也可以作用在普通对象之上,具体怎样就不多说了,请点击此处查看官网的例子。
var o = {r: 1};
var anim = new Anim(o, {
r: 100
}, {
easing: "swing",
duration: 1,
frame: function (anim, fx) {
circle(100, 100, fx.val);
}
});
anim.run();
发挥自己的想像力,多试一下不同的组合,合理的利用Anim模块就可以创造出让人惊叹的动画效果来!戳此处可查看Anim模块的使用范例,仅供参考^_^