Jquery数字上下滚动动态切换插件
Jq打造的数字滚动插件,数字变化时,动态滚动切换,效果非常好。
我们先来看示例:
CSS
.textC{
position:absolute;
width:500px;
overflow:hidden;
margin-top:100px;
line-height:30px;
margin-left:300px;
height:30px;
}
.textCspan{
color:#13BEEC;
font-size:28px;
font-weight:bold;
font-family:Georgia,"TimesNewRoman",Times,serif;
position:absolute;
}
HTML
<divclass="textC"></div> <pstyle="text-align:center;"><astyle="float:left;margin-left:300px;margin-top:200px;"href="javascript:void(0);"onClick="NumbersAnimate.ChangeNumber(NumbersAnimate.RandomNum(10000000,19999999));">随机切换数字</a> </p>
JS
<scriptsrc="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<scripttype="text/javascript">
$(function(){
NumbersAnimate.Target=$(".textC");
NumbersAnimate.Numbers=12389623;
NumbersAnimate.Duration=1500;
NumbersAnimate.Animate();
});
varNumbersAnimate={
Target:null,
Numbers:0,
Duration:500,
Animate:function(){
vararray=NumbersAnimate.Numbers.toString().split("");
//遍历数组
for(vari=0;i<array.length;i++){
varcurrentN=array[i];
//数字append进容器
vart=$("<span></span>");
$(t).append("<spanclass=\"childNumber\">"+array[i]+"</span>");
$(t).css("margin-left",18*i+"px");
$(NumbersAnimate.Target).append(t);
//生成滚动数字,根据当前数字大小来定
for(varj=0;j<=currentN;j++){
vartt;
if(j==currentN){
tt=$("<spanclass=\"main\"><span>"+j+"</span></span>");
}else{
tt=$("<spanclass=\"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){
varoldArray=NumbersAnimate.Numbers.toString().split("");
varnewArray=numbers.toString().split("");
for(vari=0;i<oldArray.length;i++){
varo=oldArray[i];
varn=newArray[i];
if(o!=n){
varc=$($(".main")[i]);
varnum=parseInt($(c).html());
vartop=parseInt($($(c).find("span")[0]).css("marginTop").replace('px',''));
for(varj=0;j<=n;j++){
varnn=$("<span>"+j+"</span>");
if(j==n){
nn=$("<span>"+j+"</span>");
}else{
nn=$("<spanclass=\"yy\">"+j+"</span>");
}
$(c).append(nn);
$(nn).css("margin-top",(j+1)*25+top+"px");
}
varmargintop=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){
varRange=a-m;
varRand=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方法时,需要保证改变后的数字和之前的数字位数一致。