Jquery数字上下滚动动态切换插件


Posted in Javascript onAugust 08, 2015

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

<div class="textC"></div>

<p style="text-align:center;"><a style="float:left; margin-left:300px; margin-top:200px;" href="javascript:void(0);" onClick="NumbersAnimate.ChangeNumber(NumbersAnimate.RandomNum(10000000,19999999));">随机切换数字</a>

</p>

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方法时,需要保证改变后的数字和之前的数字位数一致。

Javascript 相关文章推荐
jQuery下拉美化搜索表单效果代码分享
Aug 25 Javascript
基于jquery实现的树形菜单效果代码
Sep 06 Javascript
利用jQuery实现WordPress中@的ID悬浮显示评论内容
Dec 11 Javascript
从零学习node.js之利用express搭建简易论坛(七)
Feb 25 Javascript
Vue组件之Tooltip的示例代码
Oct 18 Javascript
webpack4 处理SCSS的方法示例
Sep 03 Javascript
详解vue文件中使用echarts.js的两种方式
Oct 18 Javascript
代码整洁之道(重构)
Oct 25 Javascript
JavaScript模板引擎实现原理实例详解
Dec 14 Javascript
解决vuex数据异步造成初始化的时候没值报错问题
Nov 13 Javascript
vue addRoutes路由动态加载操作
Aug 04 Javascript
Vue实现导入Excel功能步骤详解
Jul 03 Vue.js
Jquery实现弹性滑块滑动选择数值插件
Aug 08 #Javascript
jQuery实现列表内容的动态载入特效
Aug 08 #Javascript
jQuery实现下拉框选择图片功能实例
Aug 08 #Javascript
jQuery实现指定内容滚动同时左侧或其它地方不滚动的方法
Aug 08 #Javascript
jQuery实现的Div窗口震动效果实例
Aug 07 #Javascript
jQuery实现时尚漂亮的弹出式对话框实例
Aug 07 #Javascript
jquery插件jquery.beforeafter.js实现左右拖拽分隔条对比图片的方法
Aug 07 #Javascript
You might like
PHP SPL使用方法和他的威力
2013/11/12 PHP
PHP缓存集成库phpFastCache用法
2014/12/15 PHP
php通过curl模拟登陆DZ论坛
2015/05/11 PHP
thinkphp实现附件上传功能
2017/05/26 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
PHP explode()函数用法讲解
2019/02/15 PHP
javascript 读取XML数据,在页面中展现、编辑、保存的实现
2009/10/27 Javascript
JQuery 构建客户/服务分离的链接模型中Table分页代码效率初探
2010/01/22 Javascript
alert中断settimeout计时功能
2013/07/26 Javascript
jquery mobile动态添加元素之后不能正确渲染解决方法说明
2014/03/05 Javascript
Jquery的each里用return true或false代替break或continue
2014/05/21 Javascript
js判断浏览器是否支持html5
2014/08/17 Javascript
JavaScript获得表单target属性的方法
2015/04/02 Javascript
JavaScript实现随机替换图片的方法
2015/04/16 Javascript
详解js私有作用域中创建特权方法
2016/01/25 Javascript
百度多文件异步上传控件webuploader基本用法解析
2016/11/07 Javascript
Angular.JS中指令ng-if的注意事项小结
2017/06/21 Javascript
React native ListView 增加顶部下拉刷新和底下点击刷新示例
2018/04/27 Javascript
Vue中插入HTML代码的方法
2018/09/21 Javascript
Vue拖拽组件列表实现动态页面配置功能
2019/06/17 Javascript
vant实现购物车功能
2020/06/29 Javascript
Vue中强制组件重新渲染的正确方法
2021/01/03 Vue.js
python基础教程之匿名函数lambda
2017/01/17 Python
Python随机读取文件实现实例
2017/05/25 Python
python 生成图形验证码的方法示例
2018/11/11 Python
Python实现播放和录制声音的功能
2020/08/12 Python
python实现逻辑回归的示例
2020/10/09 Python
Python通过队列来实现进程间通信的示例
2020/10/14 Python
自考生自我鉴定范文
2013/10/01 职场文书
建筑专业毕业生推荐信
2013/11/21 职场文书
小学清明节活动方案
2014/03/08 职场文书
教师竞聘上岗演讲稿
2014/09/03 职场文书
卖房协议书样本
2014/10/30 职场文书
摩登时代观后感
2015/06/03 职场文书
外出培训学习心得体会
2016/01/18 职场文书
《Estab Life》4月6日播出 正式PV、主视觉图公开
2022/03/20 日漫