Jq打造的数字滚动插件,数字变化时,动态滚动切换,效果非常好。
我们先来看示例:
CSS
.textC { position:absolute; width:500px; overflow:hidden; margin-top: 100px; line-height:30px; margin-left: 300px; height:30px; } .textC span { color: #13BEEC; font-size: 28px; font-weight: bold; font-family: Georgia, \"Times New Roman\", Times, serif; position: absolute; }
HTML
JS
<script src=\"http://libs.baidu.com/jquery/2.0.0/jquery.min.js\"></script> <script type=\"text/javascript\"> $(function(){ NumbersAnimate.Target=$(\".textC\"); NumbersAnimate.Numbers=12389623; NumbersAnimate.Duration=1500; NumbersAnimate.Animate(); }); var NumbersAnimate={ Target:null, Numbers:0, Duration:500, Animate:function(){ var array=NumbersAnimate.Numbers.toString().split(\"\"); //遍历数组 for(var i=0;i<array.length;i++){ var currentN=array[i]; //数字append进容器 var t=$(\"<span></span>\"); $(t).append(\"<span class=\\\"childNumber\\\">\"+array[i]+\"</span>\"); $(t).css(\"margin-left\",18*i+\"px\"); $(NumbersAnimate.Target).append(t); //生成滚动数字,根据当前数字大小来定 for(var j=0;j<=currentN;j++){ var tt; if(j==currentN){ tt=$(\"<span class=\\\"main\\\"><span>\"+j+\"</span></span>\"); }else{ tt=$(\"<span class=\\\"childNumber\\\">\"+j+\"</span>\"); } $(t).append(tt); $(tt).css(\"margin-top\",(j+1)*25+\"px\"); } $(t).animate({marginTop:-((parseInt(currentN)+1)*25)+\"px\"},NumbersAnimate.Duration,function(){ $(this).find(\".childNumber\").remove(); }); } }, ChangeNumber:function(numbers){ var oldArray=NumbersAnimate.Numbers.toString().split(\"\"); var newArray=numbers.toString().split(\"\"); for(var i=0;i<oldArray.length;i++){ var o=oldArray[i]; var n=newArray[i]; if(o!=n){ var c=$($(\".main\")[i]); var num=parseInt($(c).html()); var top=parseInt($($(c).find(\"span\")[0]).css(\"marginTop\").replace(\'px\', \'\')); for(var j=0;j<=n;j++){ var nn=$(\"<span>\"+j+\"</span>\"); if(j==n){ nn=$(\"<span>\"+j+\"</span>\"); }else{ nn=$(\"<span class=\\\"yy\\\">\"+j+\"</span>\"); } $(c).append(nn); $(nn).css(\"margin-top\",(j+1)*25+top+\"px\"); } var margintop=parseInt($(c).css(\"marginTop\").replace(\'px\', \'\')); $(c).animate({marginTop:-((parseInt(n)+1)*25)+margintop+\"px\"},NumbersAnimate.Duration,function(){ $($(this).find(\"span\")[0]).remove(); $(\".yy\").remove(); }); } } NumbersAnimate.Numbers=numbers; }, RandomNum:function(m,a){ var Range = a - m; var Rand = Math.random(); return(m + Math.round(Rand * Range)); } } </script>
插件使用非常简单
1. 第一次调用时
NumbersAnimate.Target=$(\".textC\"); NumbersAnimate.Numbers=12389623; NumbersAnimate.Duration=1500; NumbersAnimate.Animate();
2. 如果数字改变了,再次调用就只需要调用Change函数即可
NumbersAnimate.ChangeNumber();
该插件有3个参数,分别是:
Target:数字的父级容器
Numbers:显示的数字
Duration:滚动速度,单位是毫秒
使用注意:当数字改变后调用Change方法时,需要保证改变后的数字和之前的数字位数一致。
本文地址:https://www.stayed.cn/item/744
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我