我想使用javascriptsetInterval
函数来实现一个盒子旋转动画效果,我希望动画保持1.5秒,在1.5秒内盒子会旋转360度,所以我以一毫秒计算增量,并每毫秒使用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.5s,当我console.time
用来计算整个持续时间时,它持续了大约6s!不是1.5s。为什么会发生这种情况?我该如何解决这个问题?
这是演示
更新::为什么我不使用css3:因为旋转度是作为参数,需要在外面传递表格,尚未定义