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回调函数
Dec 28 Javascript
jquery隔行换色效果实现方法
Jan 15 Javascript
在AngularJS中使用AJAX的方法
Jun 17 Javascript
JavaScript获得指定对象大小的方法
Jul 01 Javascript
javascript+HTML5的canvas实现七夕情人节3D玫瑰花效果代码
Aug 04 Javascript
JavaScript代码性能优化总结篇
May 15 Javascript
jquery实时获取时间的简单实例
Jan 26 Javascript
JS与jQuery实现ListBox上移,下移,左移,右移操作功能示例
May 31 jQuery
javascript原型链学习记录之继承实现方式分析
May 01 Javascript
微信小程序事件对象中e.target和e.currentTarget的区别详解
May 08 Javascript
javascript设计模式 ? 访问者模式原理与用法实例分析
Apr 26 Javascript
js获取图片的base64编码并压缩
Dec 05 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
批量获取memcache值并按key的顺序返回的实现代码
2011/06/14 PHP
PHP中error_reporting()函数的用法(修改PHP屏蔽错误)
2011/07/01 PHP
PHP include_path设置技巧分享
2011/07/03 PHP
PHP代码实现表单数据验证类
2015/07/28 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】
2020/04/14 PHP
js中格式化日期时间型数据函数代码
2010/11/08 Javascript
ExtJS4如何给同一个formpanel不同的url
2014/05/02 Javascript
js拆分字符串并将分割的数据放到数组中的方法
2015/05/06 Javascript
domReady的实现案例
2016/11/23 Javascript
Zepto实现密码的隐藏/显示
2017/04/07 Javascript
JavaScript使用ZeroClipboard操作剪切板
2017/05/10 Javascript
微信小程序的日期选择器的实例详解
2017/09/29 Javascript
基于Vue实现图书管理功能
2017/10/17 Javascript
AngularJS中重新加载当前路由页面的方法
2018/03/09 Javascript
angularjs获取到My97DatePicker选中的值方法
2018/10/02 Javascript
深入理解vue-class-component源码阅读
2019/02/18 Javascript
Vue实现滑动拼图验证码功能
2019/09/15 Javascript
vue elementUI 表单校验的实现代码(多层嵌套)
2019/11/06 Javascript
跟老齐学Python之字典,你还记得吗?
2014/09/20 Python
python通过yield实现数组全排列的方法
2015/03/18 Python
浅谈pandas中shift和diff函数关系
2018/04/08 Python
pygame库实现移动底座弹球小游戏
2020/04/14 Python
Pytest参数化parametrize使用代码实例
2020/02/22 Python
解决Python中报错TypeError: must be str, not bytes问题
2020/04/07 Python
Python Tricks 使用 pywinrm 远程控制 Windows 主机的方法
2020/07/21 Python
英国二手物品交易网站:Preloved
2017/10/06 全球购物
Banana Republic英国官网:香蕉共和国,GAP集团旗下偏贵族风
2018/04/24 全球购物
如何让Java程序执行效率更高
2014/06/25 面试题
什么是属性访问器
2015/10/26 面试题
完美主义个人的自我评价
2014/02/17 职场文书
美丽家庭事迹材料
2014/05/03 职场文书
建材投资建议书
2014/05/16 职场文书
司机工作自我鉴定
2014/09/19 职场文书
Python关于OS文件目录处理的实例分享
2021/05/23 Python
Golang MatrixOne使用介绍和汇编语法
2022/04/19 Golang