Anim基本介绍
KISSY 动画,这样来载入anim模块:
require(['anim'],function(Anim){
// use Anim
});
注:KISSY 会自动判断浏览器是否支持 css3 transition
,如果支持则载入的 anim
模块其实是 anim/transition
模块(KISSY在seed.js里面做了alias),否则载入 anim/timer
模块, node 模块依赖的 anim 也是同样道理。此外,自定义动画等不能用 css3 transition
来实现的动画需要保证使用 anim/timer
模块来实现。
由于node
模块依赖anim
,通常我们使用node时,使用node.animate()方法即可对某个已知节点作动画。即
require(['node', 'anim'],function($, Anim){
$(".foo").each(function(n){
new Anim(n,...).run();
})
})
等价于 require(['node'], function($){ $(".foo").animate({ width:100, height:300 }, { duration: 2000, easing:'easeBoth' , complete: function () {} }); })
此外,node节点还挂载一些常用的做动画的函数,比如fadeIn、fadeOut、slideUp、slideDown等(具体请参照Node)
实例化动画的传参
刨除直接通过node.animate()创建的动画之外,通过Anim可以生成一个动画实例
。动画实例是用来描述动画的一些基本属性,比如,从什么状态
动画到什么状态
,动画时间,缓动效果,暂停和继续动画等。
通过Anim
这样实例化一个动画实例(参照Demo):
require(["anim"],function(Anim){
// 初始化动画实例
var anim = Anim('#anim-el',
// 动画目标样式
{
'background-color':'#fcc',
'border-width':'5px'
},
{
duration : 5, // 动画时长,秒
easing : "bounceOut", // 动画特效
complete : function(){ // 动画结束的回调
alert('动画结束');
}
});
// 开始执行动画
anim.run();
});
第一种传参格式
Anim (elem, props[, duration, easing, completeFn])
各参数含义:
- elem:(String|HTMLElement|Node|window)用于作动画的DOM元素或者窗口,窗口仅支持scrollTop和scrollLeft
- props:JSON 对象,表示动画终止时节点的样式,如果设置为scrollLeft或scrollTop,这时会对元素的滚动属性产生动画
- duration:(Number),动画持续的秒数,默认为1
- easing:(String)缓动效果,也称为“平滑函数”,效果可参照这里。取值包括:
- easeNone
- easeIn
- easeOut
- easeBoth
- easeInStrong
- easeOutStrong
- easeBothStrong
- elasticIn
- elasticOut
- elasticBoth
- backIn
- backOut
- backBoth
- bounceIn
- bounceOut
- bounceBoth
- completeFn:(function),动画结束时的回调
Anim 的第二种传参格式,建议使用这种
Anim (elem, props[, config])
- elem (String|HTMLElement|KISSY.Node|window) – 作用动画的元素节点.
- props (Object) – 动画结束的 dom 样式值
- config (Number) – JSON 对象,动画配置,包括
- duration,动画持续事件,Number,单位为秒,默认为1
- easing,(string|function),默认easeNone,动画平滑函数
- queue,(String|false|undefined)所属队列名称,默认undefined,属于系统内置队列, 设置 false 则表示该动画不排队立即执行.
- complete,(function)动画结束后的回调
Anim 动画实例的方法
Anim动画实例上可调用这些方法
isRunning()
判断当前动画对象是否在执行动画过程中
isPaused()
判断当前动画是否被停止
run()
开始当前动画
stop()
结束当前动画
// 终止当前动画,动画会在当前帧直接停止(不触发 complete 回调).
anim.stop(false);//默认为false
// 为 true 时, 动画停止时会立刻跳到最后一帧(触发 complete 回调)
anim.stop(true);
pause()
在动画实例上调用, 暂停当前动画实例的动画.
resume()
继续当前动画实例的动画.
Anim 的静态方法
静态方法 isRunning(elem)
判断elem上是否有动画对象在执行
Anim.isRunning(elem);
静态方法 isPaused()
用于判断 elem 上是否有动画对象在暂停,用法同上
静态方法 stop()
停止某元素上的动画(集合).调用方法。
Anim.stop (elem, end, clearQueue, queueName)
- elem (HTMLElement|window) – 作用动画的元素节点.
- end (Boolean) – 此参数同实例方法 stop() 中的 finish 参数.
- clearQueue (Boolean) – 默认为 false, 是否清除动画队列中余下的动画.
- queueName (String) – 队列名字,不设置此值,表示停止所有队列中的所有动画,设置 queueName 后, 表示停止元素上指定队列中的所有动画,取值包括:
- null,表示默认队列的动画
- false 表示不排队的动画
- string 类型表示指定名称的队列的动画
静态方法 pause()
暂停某元素上的动画(集合).调用方法,其中queueName参数含义同上
Anim.pause (elem, queueName)
静态方法 resume()
继续某元素上的动画,调用方法,其中queueName含义同上
Anim.resume (elem, queueName)
动画实例的事件
complete 事件
动画结束后会触发complete
事件