最初の例では、アニメーションを再開するたびに、アニメーション化するピクセルが数ピクセルしかない場合でも、常に2秒のアニメーションを設定しているため、アニメーションの進行が遅いように見えます。再起動時に同じ速度で続行する場合は、アニメーションに残っている距離に応じて時間をスケーリングする必要があります。
これは、残り時間に応じて時間をスケーリングする最初の例の修正バージョンです。
$('#button').click(function() {
if($(this).text() == 'play') {
$(this).text('pause');
var box$ = $('#box');
var left = parseInt(box$.css("left"), 10) || 0;
box$.animate({ left:'150px' }, 2000 * ((150 - left) / 150), 'linear');
}
else {
$(this).text('play')
$('#box').stop();
}
})
あなたはそれがここで働くのを見ることができます:http://jsfiddle.net/jfriend00/TVg7x/
2つのオプションから、最初のバージョンを選択します。これは、アニメーションが停止している場合でも、2番目のバージョンではインターバルタイマーが実行されたままになるためです。これは、特にモバイルでのCPU使用率には適していません。