私はjavascriptsetInterval
でアニメーション効果を達成するために使用しようとしています.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
て所要時間を計算しますが、1 秒ではなく、常に 3 秒以上かかります。
では、私のコードの何が問題なのですか?
デモはこちら
しかし、私がjquery animateを使用すると、私が指摘したのと同じように:
console.time("animate");
$('div').animate({
width: '300px'
}, {
duration: 1000,
complete: function () {
console.timeEnd("animate");
}
})
デモはこちら
では、なぜ jquery はそれを達成できたのでしょうか?秘密は何ですか?