我想用javascript setInterval
函數來實現一個框旋轉動畫效果,我想動畫保持1.5秒,在1.5s框中會旋轉360度,所以我計算一毫秒的增量,並用每millisecond.Here setInterval函數是我的代碼:使用javascript setInterval函數實現動畫效果:比我預想的要慢
var duration= 1500;//The animation duration time
var rotate = 360;//The rotate need to be rotate
var degPerSec = rotate/parseFloat(duration); //the increment per millisecond
var degree = 0;//the begin degree
console.time('rotate');
var timer = setInterval(function() {
degree = degree + degPerSec;
$('#test')[0].style.MozTransform = 'rotate(' + degree + 'deg)';
$('#test')[0].style.WebkitTransform = 'rotate(' + degree + 'deg)';
if (degree >= rotate) { //if reach 360 degree , clear the interval
clearInterval(timer);
console.timeEnd('rotate');// caculate the duration
}
}, 1)
})
動畫能夠成功執行,但現在看來,這最後不僅1.5秒,當我使用console.time
來計算整個持續時間,它持續大約6秒!不是1.5秒。爲什麼發生這種情況?我該如何解決這個問題?
這裏是demo
更新:: 爲什麼我不使用CSS3:的Cuz旋轉度爲參數,這需要通過形式外,尚未
JavaScript中不保證定時器間隔,'1ms'幾乎不可能。請參閱[本文](http:// ejohn。org/blog/how-javascript-timers-work /)的一個很好的解釋。 – bfavaretto