我有一个问题,jQuery的animate()
函数没有完成动画我的数字计数动画。动画只能从0到5000进行计数,但刷新时有时会在4999结束,其他时间在4989等。jQuery animate()没有完成动画
它正常工作的时间为80%,但刷新时的时间为20%页面动画以不同的数字结束。我究竟做错了什么?
http://jsbin.com/dobajepoti/2/(不断刷新页面,看到它)
我有一个问题,jQuery的animate()
函数没有完成动画我的数字计数动画。动画只能从0到5000进行计数,但刷新时有时会在4999结束,其他时间在4989等。jQuery animate()没有完成动画
它正常工作的时间为80%,但刷新时的时间为20%页面动画以不同的数字结束。我究竟做错了什么?
http://jsbin.com/dobajepoti/2/(不断刷新页面,看到它)
尝试没有jQuery的:
var count = 0;
var counter = setInterval(countUp, 1);
var output = document.querySelector("[data-value]");
var max = output.getAttribute("data-value");
function countUp() {
count = count + 25;
if (count > max) {
clearInterval(counter);
return;
}
output.innerHTML = count;
}
的问题是,你对动画1000毫秒。根据CPU的不同,它可能在那段时间内无法计算5000次。您可以更长时间对其进行动画处理,并在符合条件时使用stop()停止动画。
的step()
功能上无法保证每个中间值被调用,而是动画(其可以由超时或通过请求next animation frame被定义)的每步骤。所以,5,000的最终值并不总是构成一个动画步骤。
为了确保它,你可以在你的每一步的功能分配给done
回调:
$(thing).animate({
// ...
step: myStepFunction,
done: myStepFunction
});
坚果,似乎jsbin是下来。我稍后再试。 – user3658991
哇,这是矫枉过正。你应该用最简单的方式实现这个,就是香草javascript。像这样的东西让我相信框架正在他们的编程之旅中伤害人们。所以请切换到[vanilla-js](http://vanilla-js.com/) – Sharky
Perhapes,一秒钟不足以调用commaSeparateNumber()5000次。两秒钟就会达到5000次。 – alexP