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 Cookie的读取和写入函数
Dec 08 Javascript
JQuery从头学起第一讲
Jul 04 Javascript
jquery ajax学习笔记2 使用XMLHttpRequest对象的responseXML
Oct 16 Javascript
js点击更换背景颜色或图片的实例代码
Jun 25 Javascript
JS前端加密算法示例
Dec 22 Javascript
详解Jquery Easyui的验证扩展
Jan 09 Javascript
jQuery图片瀑布流的简单实现代码
Mar 15 Javascript
js中less常用的方法小结
Aug 09 Javascript
jQuery EasyUI结合zTree树形结构制作web页面
Sep 01 jQuery
Vue前后端不同端口的实现方法
Sep 19 Javascript
解决Vue+Electron下Vuex的Dispatch没有效果问题
May 20 Javascript
解析原生JS getComputedStyle
May 25 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
虹吸式咖啡探讨–研磨
2021/03/03 冲泡冲煮
在PHP里得到前天和昨天的日期的代码
2007/08/16 PHP
PHP+Ajax检测用户名或邮件注册时是否已经存在实例教程
2014/08/23 PHP
Symfony2安装的方法(2种方法)
2016/02/04 PHP
PHP获取文件扩展名的常用方法小结【五种方式】
2018/04/27 PHP
tp框架(thinkPHP)实现三次登陆密码错误之后锁定账号功能示例
2018/05/24 PHP
jquery+ajax+C#实现无刷新操作数据库数据的简单实例
2014/02/08 Javascript
JQuery显示隐藏DIV的方法及代码实例
2015/04/16 Javascript
三种Node.js写文件的方式
2016/03/08 Javascript
Vue.js第四天学习笔记
2016/12/02 Javascript
Angular2 Service实现简单音乐播放器服务
2017/02/24 Javascript
详解Vue-基本标签和自定义控件
2017/03/24 Javascript
详解利用 Express 托管静态文件的方法
2017/09/18 Javascript
浅谈webpack SplitChunksPlugin实用指南
2018/09/17 Javascript
python实现可以断点续传和并发的ftp程序
2016/09/13 Python
Python之日期与时间处理模块(date和datetime)
2017/02/16 Python
python操作oracle的完整教程分享
2018/01/30 Python
python解压TAR文件至指定文件夹的实例
2019/06/10 Python
Python3实现监控新型冠状病毒肺炎疫情的示例代码
2020/02/13 Python
将pymysql获取到的数据类型是tuple转化为pandas方式
2020/05/15 Python
用pip给python安装matplotlib库的详细教程
2021/02/24 Python
移动端HTML5实现文件上传功能【附代码】
2016/03/25 HTML / CSS
精油和天然健康美容产品:Art Naturals
2018/01/27 全球购物
戴森香港官方网站:Dyson香港
2021/02/11 全球购物
怎样声明接口
2014/09/19 面试题
药剂专业学生求职信范文
2013/12/28 职场文书
同学聚会欢迎辞
2014/01/14 职场文书
小学教师国培感言
2014/02/08 职场文书
优秀大学生自荐信
2014/06/09 职场文书
小学生心理健康活动总结
2015/05/08 职场文书
来探秘“德国中小企业”的成功之道
2019/07/26 职场文书
MySQL锁机制
2021/04/05 MySQL
Python中json.dumps()函数的使用解析
2021/05/17 Python
教你用Python matplotlib库制作简单的动画
2021/06/11 Python
《月歌。》宣布制作10周年纪念剧场版《RABBITS KINGDOM THE MOVIE》
2022/04/02 日漫
DIY胆机必读:各国电子管评价
2022/04/06 无线电