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 相关文章推荐
javascript数组的扩展实现代码集合
Jun 01 Javascript
ExtJs中gridpanel分组后组名排序实例代码
Dec 02 Javascript
使用jQuery重置(reset)表单的方法
May 05 Javascript
JavaScript 七大技巧(二)
Dec 13 Javascript
总结JavaScript设计模式编程中的享元模式使用
May 21 Javascript
javascript运算符——位运算符全面介绍
Jul 14 Javascript
easyui-combobox 实现简单的自动补全功能示例
Nov 08 Javascript
Vue Autocomplete 自动完成功能简单示例
May 25 Javascript
javascript实现日历效果
Jun 17 Javascript
vue实现移动端省市区选择
Sep 27 Javascript
javascript的setTimeout()使用方法总结
Nov 20 Javascript
解决vue-router的beforeRouteUpdate不能触发
Apr 14 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 多行多列显示
2009/08/15 PHP
基于PHP的cURL快速入门教程 (小偷采集程序)
2011/06/02 PHP
PHP和.net中des加解密的实现方法
2013/02/27 PHP
推荐几个开源的微信开发项目
2014/12/28 PHP
PHP获取指定月份第一天和最后一天的方法
2015/07/18 PHP
深入了解PHP中的Array数组和foreach
2016/11/06 PHP
jquery 学习之二 属性(html()与html(val))
2010/11/25 Javascript
Ext中下拉列表ComboBox组件store数据格式用法介绍
2013/07/15 Javascript
jQuery实现类似滑动门切换效果的层切换
2013/09/23 Javascript
JavaScript实现倒计时代码段Item1(非常实用)
2015/11/03 Javascript
javascript特殊日历控件分享
2016/03/07 Javascript
使用jQuery操作HTML的table表格的实例解析
2016/03/13 Javascript
js轮播图透明度切换(带上下页和底部圆点切换)
2017/04/27 Javascript
jquery ztree实现右键收藏功能
2017/11/20 jQuery
基于cropper.js封装vue实现在线图片裁剪组件功能
2018/03/01 Javascript
详解vue项目中使用token的身份验证的简单实践
2019/03/08 Javascript
koa大型web项目中使用路由装饰器的方法示例
2019/04/02 Javascript
vue缓存的keepalive页面刷新数据的方法
2019/04/23 Javascript
Promise扫盲贴
2019/06/24 Javascript
Js通过AES加密后PHP用Openssl解密的方法
2019/07/12 Javascript
vue 在服务器端直接修改请求的接口地址
2020/12/19 Vue.js
python通过openpyxl生成Excel文件的方法
2015/05/12 Python
使用Python解析JSON数据的基本方法
2015/10/15 Python
详谈Numpy中数组重塑、合并与拆分方法
2018/04/17 Python
python实现指定文件夹下的指定文件移动到指定位置
2018/09/17 Python
Django+Xadmin构建项目的方法步骤
2019/03/06 Python
Python中调用其他程序的方式详解
2019/08/06 Python
Pytorch之卷积层的使用详解
2019/12/31 Python
Selenium使用Chrome模拟手机浏览器方法解析
2020/04/10 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
2021/02/25 Python
美国著名的婴儿学步鞋老品牌:Robeez
2016/08/20 全球购物
师说教学反思
2014/02/07 职场文书
村主任群众路线个人对照检查材料
2014/09/26 职场文书
水电工岗位职责
2015/02/14 职场文书
2015新生加入学生会自荐书
2015/03/24 职场文书
5种 JavaScript 方式实现数组扁平化
2021/10/05 Javascript