連続するアニメーションの時間間隔を制御する
2014/07/14
setTimeout関数を使い、複数のアニメーションを制御する方法もあるが、どうもややこしくなりがちですっきりいかなかった。
そこで、
参考 http://qiita.com/kakusuke/items/48c0399d43671825f770Deferredオブジェクトで各アニメーションの開始を指定する方法に落ち着いた。あまりスマートではないのかもしれないが、個人的にはわかりやすい。
1〜2番めのアニメーションまでの間隔は 100ms、2〜3番めは 1000msとちょっと長くなっている。
jQuery.noConflict();
jQuery.extend({
wait: function(duration){
var dfd = jQuery.Deferred();
setTimeout(dfd.resolve, duration);
return dfd;
}
});
jQuery('.btn').click(function() {
var Timer=500;//アニメーション開始までの間隔
jQuery.wait(Timer).done(function(){
jQuery(function(){
jQuery('#box1').animate({backgroundColor:'#00A1CB'},500);//アニメーション(1)
});
});Timer=Timer+100;//次のアニメーションまでの間隔
jQuery.wait(Timer).done(function(){
jQuery(function(){
jQuery('#box2').animate({backgroundColor:'#7DB500'},500);//アニメーション(2)
});
});Timer=Timer+1000;//次のアニメーションまでの間隔
jQuery.wait(Timer).done(function(){
jQuery(function(){
jQuery('#box3').animate({backgroundColor:'#F18D05'},500);//アニメーション(3)
});
});
});

