zoukankan      html  css  js  c++  java
  • 关于数字加载的动画 jquery

    这是关于数字加载的一个动画,从0开始变化到设置的数字,依赖于jquery,效果如下所示

    当然,数字要显示的位数是可以设置的,默认是全部位数的数字,设置显示位数可以直接传递参数,例如:

    html文件为:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>数字</title>
        <link rel="stylesheet" type="text/css" href="css/main.css" />
        <script type="text/javascript" src="js/lib/sea.js"></script>
    </head>
    <body>
    <h1 class="num" data-num="83692">0</h1>
    <h2 class="num1" data-num="88692">0</h2>
        <script type="text/javascript"  src="js/entry.js"></script>
    </body>
    </html>

    entry.js为主要js,是这个动画的方法,内容为:

    function num_effect(dom,conf,fn){
        if(typeof conf === 'function'){
            fn = conf;
            conf = {};
        }
        this.conf = $.extend({
            digits: '', //显示的位数
            time: 0.05 //动画时间,单位为s
        }, conf || {});
        this.fn = fn;
        this.dom = $(dom);
        this.val = this.dom.data("num");
        this.handle();
    }
    
    num_effect.prototype.handle = function(){
        var self = this;
        var str = self.val.toString();
        var digits = parseInt(self.conf.digits);
        if(isNaN(digits)){
            digits = str.length;
        }
        var arrs = str.substr(0,digits).split("");
        var j = 0, max = 0;
        var setFun = setInterval(function(){
            if(max >= digits){
                clearInterval(setFun);
                self.fn();//返回函数
            }
            (function(j){//更改值
                var tmp = [];
                for(var i=0; i<arrs.length; i++){
                    var now = parseInt(arrs[i]);
                    if(now > j){
                        tmp[i] = j;
                    }else{
                        if(now === j){
                            max ++;
                        }
                        tmp[i] = now;
                    }
                }
                self.dom.text(tmp.join(""));
            })(j);
            j++;
        },self.conf.time*1000);
        setFun;
    }
    
    $.fn.extend({
        numEffect: function(conf,fn){
            this.each(function(i,dom){
                new num_effect(dom,conf,fn);
            });
        }
    });

    那么调用这个方法实现动画只需要调用函数numEffect即可,如下

    $(".num").numEffect();

    如果加载完成后需要再执行一些js,那么只需如下这样即可:

    $(".num,.num1").numEffect(function(){
        console.log("加载完成");
    });

    查看entry.js可知,参数digits是控制显示的位数的,从左到右开始,time是数字变化的时间,单位为s,使用方法如下

    $(".num1").numEffect({'digits': 2, 'time': 0.1});

    目前,该函数只支持了这两个参数的设置,以及执行后的函数设置,没有实现按需执行动画,以后有需要了再说吧,暂时先这么做个笔记吧。

  • 相关阅读:
    SGU 495 Kids and Prizes 概率DP 或 数学推理
    poj 2799 IP Networks 模拟 位运算
    uva 202 Repeating Decimals 模拟
    poj 3158 Kickdown 字符串匹配?
    uva 1595 Symmetry 暴力
    uva 201 Squares 暴力
    uva 1594 Ducci Sequence 哈希
    uva 1368 DNA Consensus String 字符串
    数字、字符串、列表的常用操作
    if条件判断 流程控制
  • 原文地址:https://www.cnblogs.com/cyj7/p/4956634.html
Copyright © 2011-2022 走看看