zepto.js有一个动画元素的 API,它允许包含一个“完成”回调函数。动画源
但是似乎不支持jquery 类型队列 API 。
我想知道是否有使用 zepto 创建动画序列的内置方法,或者我应该从某个地方捏一个队列功能?
“完成”回调也没有传递任何参数,所以知道你处于动画序列的哪个阶段有点难看 - 也许有一个解决方法?
zepto.js有一个动画元素的 API,它允许包含一个“完成”回调函数。动画源
但是似乎不支持jquery 类型队列 API 。
我想知道是否有使用 zepto 创建动画序列的内置方法,或者我应该从某个地方捏一个队列功能?
“完成”回调也没有传递任何参数,所以知道你处于动画序列的哪个阶段有点难看 - 也许有一个解决方法?
我不确定你是否会觉得它有帮助,但我写了一个小插件来排队 zepto 动画:
$.fn.queueAnim = function (steps, callback) {
var $selector = this;
function iterator(step) {
step.push(iterate);
$selector.animate.apply($selector, step);
}
function iterate() {
if (!steps.length) return callback && callback();
var step = steps.shift();
iterator(step);
}
iterate();
}
一个示例用法:
$('div').queueAnim([
[ { 'rotate': '15deg' }, 200, 'ease-out' ],
[ { 'rotate': '-13deg' }, 300, 'ease-out' ],
[ { 'rotate': '10deg' }, 400, 'ease-out' ],
[ { 'rotate': '0deg' }, 500, 'ease-out' ]
], function () {
// all done
});
您可以传递给 zepto 的 anim(ate) 函数的回调仅在动画完成时调用。
假设在回调期间css属性与传入的属性相同是保存的。因此,如果您不直接传入它们,则可以重用该对象。
此外,在回调中,您始终可以使用该$.fn.css
函数来获取当前样式,尽管这可能不是最高效的方式。
$.fn.anim
关于排队,使用动画回调,您可以通过调用嵌套回调来构建基本队列。
$('div').animate({width: 200}, 1000, "linear", function(){
$(this).animate({"background-color": "red"}, 300, "ease-in", function() {
var $this = $(this),
width = $this.css("width"); // will be "200px"
$this.animate({height: 300}, 1000, "linear");
});
});
如果您想要或需要更高级的队列,将 jQuery 队列作为插件移植到 zepto 应该没什么大不了的。
干杯