我想用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