HTML:
<div id="foo"></div>
CSS:
#foo { width: 100px; height: 100px; background: #f00; }
.a { -webkit-transition: -webkit-transform 1s linear; -webkit-transform: translateY(100px); }
.b { -webkit-transition: -webkit-transform 1s linear; -webkit-transform: translateY(50px); }
JavaScript的:
$(function () {
var elm = $('#foo');
var animate = function (className, callback) {
elm.addClass(className);
setTimeout(function () {
elm.removeClass(className)
callback();
}, 1000);
};
animate('a', function () {
animate('b');
});
});
问题:
在第二次迭代期间,元素实际上是从先前转换的Y移动,而不是无转换元素状态。
使用关键帧会起作用,但这需要添加更多预定义的CSS类,这实际上不是一个选项。
答案 0 :(得分:0)
我提出的可能解决方案是使用setTimeout
。
$(function () {
var elm = $('#foo');
var animate = function (className, callback) {
setTimeout(function () {
elm.addClass(className);
}, 0);
setTimeout(function () {
elm.removeClass(className)
callback();
}, 1000);
};
animate('a', function () {
animate('b');
});
});
可以在http://jsfiddle.net/CP8An/和http://jsfiddle.net/CP8An/1/看到两者的性格。后者是理想的结果。
我不明白为什么需要setTimeout
- 毕竟,在调用回调之前删除了之前定义的类。使用setTimeout
似乎更像是一种解决方法而不是解决方案。这可能对处理类似问题的人有所帮助,尽管我仍然愿意接受其他建议。