step
のオプションを使用しanimate
て、アニメーションの距離を追跡できます。次に、その情報を使用して、アニメーションの残り時間を計算できます。次に、現在のアニメーションを停止し、半分の長さで新しいアニメーションを開始します。
http://jsfiddle.net/MdD45/
編集
に渡された2番目のパラメータには、アニメーションの何パーセントかをstep
示すという名前のプロパティが含まれているようです。pos
それは物事をさらに単純化することができます。
http://jsfiddle.net/MdD45/1/
var startVal = 0;
var endVal = 1;
var duration = 10000;
var howfar = 0;
$('span').css("opacity",startVal)
.animate({
opacity : endVal
}, {
duration: duration,
step: function(now, fx){
howfar = fx.pos; // between 0 and 1, tells how far along %
}
});
$("button").click(function(){
// calculate the new duration as half of the remaining duration
var timeRemaining = duration - (howfar * duration);
duration = timeRemaining / 2;
$('span').stop().animate({
opacity : endVal
}, {
duration: duration,
step: function(now, fx){
howfar = fx.pos; // between 0 and 1, tells how far along %
}
});
});