乐趣区

数字滚动插件numberAnimate.js的使用及效果修改

有个实现数字滚动的需求,想着肯定有很多这种效果的插件,就不自己造轮子了,于是,找了个 numberAnimate js 数字滚动插件,还挺好用,很简单,刚好符合需求。
代码如下:
<!DOCTYPE html>
<html lang=”en”>
<head>
<meta charset=”utf-8″>
<title> 数字滚动插件 </title>
<link rel=”stylesheet” type=”text/css” href=”../dist/style/numberAnimate.css” />
</head>
<body>
无分隔符,无小数点:<div class=”numberRun”></div><br><br>
</body>
<script src=”http://cdn.bootcss.com/jquery/1.8.3/jquery.min.js”></script>
<script type=”text/javascript” src=”../dist/script/numberAnimate.js”></script>
<script type=”text/javascript”>
$(function(){
// 初始化
var numRun = $(“.numberRun”).numberAnimate({num:’1553093′, speed:1000});
// 想要的是过一段时间加 1 的效果,可以实现
var nums = 1553093;
setInterval(function(){
nums+= 1;
numRun.resetData(nums);
},2000);

})
</script>
</html>
想要的效果是过一段时间加 1 的效果,可以实现,但是有个小小的 bug,那就是,比如说,个位数字加到 9 时进一位然后该位上为 0,问题来了,这里 0 的数字却滚动不出来,直接到了下一个时间间隔时滚动到了 11,调试了很久发现,是 numberAnimate.js 中,第 85 行的判断条件有问题,注释掉该 if 判断就好了,如下图:
上图中,第 85 行的 $(this).css(“top”) 一直都是 0px,而第 84 行计算获取到的 thisTop 在数字滚到到 0 时值为 0px,所以导致直接跳过了判断,没有执行到 transform 动画那里,所以少了 0 的效果,导致看起来的效果就是 9 直接跳到了 11,没有 10。
另外,提示一句,改变数字的字号大小,需要修改的 numberAnimate.css 中的 height、width、字号的比例要把握好,一不小心就坏了,呵呵,亲身体会 -_-||

退出移动版