我尝试用setInterval
javascript 来实现动画效果,我想要一个div
的宽度增加200px
(盒子的原点宽度是100px
)1000ms
:
var MAX = 300, duration = 1000;
var inc = parseFloat( MAX / duration );
var div = $('div')[0];
var width = parseInt(div.style.width, 10);
function animate (id) {
width += inc;
if (width >= MAX) {
clearInterval(id);
console.timeEnd("animate");
}
div.style.width = width + "px";
}
console.time("animate");
var timer = setInterval(function () {
animate(timer);
}, 0)
我用console.time
来计算需要多少时间,但是,它总是需要 3 秒或更多,而不是 1 秒。
那么我的代码有什么问题?
演示在这里
但是当我使用 jquery animate 时,它就像我指出的那样:
console.time("animate");
$('div').animate({
width: '300px'
}, {
duration: 1000,
complete: function () {
console.timeEnd("animate");
}
})
这是演示
那么为什么jquery可以实现呢?秘诀是什么?