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实现ASP分页函数 HTML分页函数
Sep 22 Javascript
用js实现上传图片前的预览(TX的面试题)
Aug 14 Javascript
DD_belatedPNG,IE6下PNG透明解决方案(国外)
Dec 06 Javascript
javascript firefox 自动加载iframe 自动调整高宽示例
Aug 27 Javascript
JS中图片缓冲loading技术的实例代码
Aug 29 Javascript
javascript创建和存储cookie示例
Jan 07 Javascript
js的Boolean对象初始值示例
Mar 04 Javascript
ArtEditor富文本编辑器增加表单提交功能
Apr 18 Javascript
详解webpack es6 to es5支持配置
May 04 Javascript
详解VUE中常用的几种import(模块、文件)引入方式
Jul 03 Javascript
JS实现使用POST方式发送请求
Aug 30 Javascript
CKEditor扩展插件:自动排版功能autoformat插件实现方法详解
Feb 06 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
ADODB的数据库封包程序库
2006/12/31 PHP
PHP中去掉字符串首尾空格的方法
2012/05/19 PHP
php实现单链表的实例代码
2013/03/22 PHP
PHP学习笔记(一) 简单了解PHP
2014/08/04 PHP
php处理复杂xml数据示例
2016/07/11 PHP
PHP怎样用正则抓取页面中的网址
2016/08/09 PHP
模拟用户操作Input元素,不会触发相应事件
2007/05/11 Javascript
封装好的省市地区联动控件附下载
2007/08/13 Javascript
jQuery 顺便学习下CSS选择器 奇偶匹配nth-child(even)
2010/05/24 Javascript
jQuery-Easyui 1.2 实现多层菜单效果的代码
2012/01/13 Javascript
js 获取经纬度的实现方法
2016/06/20 Javascript
node结合swig渲染摸板的方法
2018/04/11 Javascript
vue组件中的数据传递方法
2018/05/14 Javascript
jQuery.extend 与 jQuery.fn.extend的用法及区别实例分析
2018/07/25 jQuery
Intellij IDEA搭建vue-cli项目的方法步骤
2018/10/20 Javascript
小程序rich-text组件如何改变内部img图片样式的方法
2019/05/22 Javascript
微信小程序自定义导航栏(模板化)
2019/11/15 Javascript
[02:56]DOTA2上海特锦赛小组赛解说FreeAgain采访花絮
2016/02/27 DOTA
Python分治法定义与应用实例详解
2017/07/28 Python
django允许外部访问的实例讲解
2018/05/14 Python
利用Python如何将数据写到CSV文件中
2018/06/05 Python
python得到单词模式的示例
2018/10/15 Python
Python configparser模块应用过程解析
2020/08/14 Python
基于Jquery和Css3代码制作可以缩放的搜索框
2015/11/19 HTML / CSS
大女孩胸罩:Big Girls Bras
2016/12/15 全球购物
儿科主治医生个人求职信
2013/09/23 职场文书
2014年六一儿童节演讲稿
2014/05/23 职场文书
关于读书的演讲稿800字
2014/08/27 职场文书
先进个人事迹材料
2014/12/29 职场文书
颐和园英文导游词
2015/01/30 职场文书
2015年计划生育协会工作总结
2015/05/13 职场文书
民间借贷纠纷答辩状
2015/08/03 职场文书
高中16字霸气押韵班级口号集锦!
2019/06/27 职场文书
Python 读写 Matlab Mat 格式数据的操作
2021/05/19 Python
HTML基本元素标签介绍
2022/02/28 HTML / CSS
十大最强格斗系宝可梦,超梦X仅排第十,第二最重格斗礼仪
2022/03/18 日漫