zoukankan      html  css  js  c++  java
  • jquery实现数字滚动动画特效

    HTML

    我们首先载入jQuery库文件和动画背景插件:animateBackground-plugin.js。

     
    <script type="text/javascript" src="js/jquery.js"></script> 
    <script type="text/javascript" src="js/animateBackground-plugin.js"></script> 

    然后我们在页面适当的位置中加入要展示数字滚动效果的html元素。

     
    <div id="total"> 
       下载量:<span class="t_num"></span>次 
    </div> 

    jQuery

    首先来写一个函数show_num(),该函数用来实现动态滚动数字。我们将统计数字n进行拆分成一个个单独的数字,这些数字用<i></i>包围,通过调用插件backgroundPosition将图片定位到对应的每个数字上。

     
    function show_num(n){ 
        var it = $(".t_num i"); 
        var len = String(n).length; 
        for(var i=0;i<len;i++){ 
            if(it.length<=i){ 
                $(".t_num").append("<i></i>"); 
            } 
            var num=String(n).charAt(i); 
            var y = -parseInt(num)*30; //y轴位置 
            var obj = $(".t_num i").eq(i); 
            obj.animate({ //滚动动画 
                backgroundPosition :'(0 '+String(y)+'px)'  
                }, 'slow','swing',function(){} 
            ); 
        } 
    } 
     

    接着,我们通过ajax获取后台最新的下载次数。下面的代码是一个常见的jQuery的ajax请求,通过post请求到data.php,data.php或获取最新的下载次数,处理成功后则得到下载次数:data.count,然后调用show_num()实现数字滚动。

     
    function getdata(){ 
        $.ajax({ 
            url: 'data.php', 
            type: 'POST', 
            dataType: "json", 
            cache: false, 
            timeout: 10000, 
            error: function(){}, 
            success: function(data){ 
                show_num(data.count); 
            } 
           }); 
    } 
     

    最后,我们在页面加载完后要初始化数据,然后每隔3秒钟执行一次ajax请求,更新下载次数:

     
    $(function(){ 
        getdata(); 
        setInterval('getdata()', 3000);//每隔3秒执行一次 
    }); 
     

    类似可以在统计网站访问量、统计影片播放次数、倒计时等方面得到应用,至于后台data.php如何处理数据不在本文叙述范围内,有兴趣的同学可以自己写一个诸如计数器之类的后台程序来返回data.count。

    转载自:helloweba.com

    这篇文章中的核心是show_num()函数,它完美实现了计时器每次执行后怎么动态改变数字的每一位数字,想当初自己写的,我使用if else语句来依此判断个位、十位、百位…是否进位,真的是糟糕透了!主要是不知道有charAt()这个方法。

    总之值得借鉴,但这篇文章中给backgroundPosition设置animate动画,尽管特意引入animateBackground-plugin.js插件,但实际测试还是失效,不知道是不是jquery版本的问题。

    解决办法:换一种思路。可以把追加的<i>元素改成<img>元素,并给img相对定位,给img的top值设置动画就可以完美解决!

  • 相关阅读:
    再说ASP.NET 缓存
    asp.net 动态加载的用户控件属性传id值问题
    关于四季学期数据库设计问题
    如何在IIS里对网站限速
    命名空间与程序集
    多GridView页面中使用AJAX的优化方法
    OutputCache cookies 问题
    速度优化之GZIP对jscss压缩
    canphp框架论坛成立www.canphp.com/bbs/index.php现在论坛内测中
    js selection对象使用方法
  • 原文地址:https://www.cnblogs.com/flappyCoder/p/3640285.html
Copyright © 2011-2022 走看看