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 相关文章推荐
js表数据排序 sort table data
Feb 18 Javascript
12款经典的白富美型—jquery图片轮播插件—前端开发必备
Jan 08 Javascript
Javascript获取数组中的最大值和最小值的方法汇总
Jan 01 Javascript
java中String类型变量的赋值问题介绍
Mar 23 Javascript
js获取Html元素的实际宽度高度的方法
May 19 Javascript
JavaScript判断数字是否为质数的方法汇总
Jun 02 Javascript
KnockoutJS 3.X API 第四章之表单textInput、hasFocus、checked绑定
Oct 11 Javascript
原生JS发送异步数据请求
Jun 08 Javascript
JS仿QQ好友列表展开、收缩功能(第二篇)
Jul 07 Javascript
Node.js自定义实现文件路由功能
Sep 22 Javascript
Vue使用zTree插件封装树组件操作示例
Apr 25 Javascript
在Layui 的表格模板中,实现layer父页面和子页面传值交互的方法
Sep 10 Javascript
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水印
2007/03/16 PHP
php反弹shell实现代码
2009/04/22 PHP
php在文件指定行中写入代码的方法
2012/05/23 PHP
php实现仿写CodeIgniter的购物车类
2015/07/29 PHP
ThinkPHP 整合Bootstrap Ajax分页样式
2016/12/23 PHP
PHP时间日期增减操作示例【date strtotime实现加一天、加一月等操作】
2018/12/21 PHP
php更新cookie内容的详细方法
2019/09/30 PHP
获取下拉列表框的值是数组,split,$.inArray示例
2013/11/13 Javascript
js数组转json并在后台对其解析具体实现
2013/11/20 Javascript
jQuery实现HTML5 placeholder效果实例
2014/12/09 Javascript
JavaScript的Date()方法使用详解
2015/06/09 Javascript
详解JavaScript中的表单验证
2015/06/16 Javascript
windows下安装nodejs及框架express
2015/08/07 NodeJs
jqGrid表格应用之新增与删除数据附源码下载
2015/12/02 Javascript
JS DOM实现鼠标滑动图片效果
2020/09/17 Javascript
简单实现js菜单栏切换效果
2017/03/04 Javascript
Vue-Router2.X多种路由实现方式总结
2018/02/09 Javascript
vue下拉列表功能实例代码
2018/04/08 Javascript
使用vue打包时vendor文件过大或者是app.js文件很大的问题
2018/06/29 Javascript
layui--select使用以及下拉框实现键盘选择的例子
2019/09/24 Javascript
vue遍历生成的输入框 绑定及修改值示例
2019/10/30 Javascript
jQuery实现轮播图效果
2019/11/26 jQuery
[02:51]DOTA2 2015国际邀请赛中国区预选赛第一日战报
2015/05/27 DOTA
python中类的一些方法分析
2014/09/25 Python
python list排序的两种方法及实例讲解
2017/03/20 Python
基于python的图片修复程序(实现水印去除)
2018/06/04 Python
Python字典的核心底层原理讲解
2019/01/24 Python
Python3 翻转二叉树的实现
2019/09/30 Python
Mysql数据库反向生成Django里面的models指令方式
2020/05/18 Python
几款主流好用的富文本编辑器(所见即所得常用编辑器)介绍
2021/03/17 Javascript
《蚂蚁和蝈蝈》教学反思
2014/02/24 职场文书
教职工代表大会主持词
2014/04/01 职场文书
建筑安全责任书范本
2014/07/24 职场文书
八荣八耻的活动方案
2014/08/16 职场文书
投资入股合作协议书
2014/10/28 职场文书
nginx静态资源的服务器配置方法
2022/07/07 Servers