zoukankan      html  css  js  c++  java
  • 关于动态刷新的数字的小插件 One

    最近工作中需要做一个关于时间的刷新的小插件:

    在写特效之前,需要先引入jquery的文件。

    html:代码

    <div class="data">
    <div class="content data_content">
    <dl>
    <dt class="hd1"><span id="num1">200,000</span>+</dt>
    <dd>核心</dd>
    </dl>
    <dl>
    <dt class="hd2"><span id="num2">70</span>+</dt>
    <dd>覆盖</dd>
    </dl>
    <dl>
    <dt class="hd3"><span id="num3">100</span>亿+</dt>
    <dd>累计(元)</dd>
    </dl>
    </div>
    </div>

    在写特效的js代码之前要引入关于这个特效的js代码。
    <script src="countUp.js"></script>
    !function(a,b){
        "function"==typeof define&&define.amd?define(b):"object"==typeof exports?module.exports=b(require,exports,module):a.CountUp=b()
    }
    (this,function(){
        var d=function(a,b,c,d,e,f){
            for(var g=0,h=["webkit","moz","ms","o"],
                i=0;i<h.length&&!window.requestAnimationFrame;++i)window.requestAnimationFrame=window[h[i]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[h[i]+"CancelAnimationFrame"]||window[h[i]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(a){
                var c=(new Date).getTime(),
                d=Math.max(0,16-(c-g)),
                e=window.setTimeout(
                    function(){a(c+d)},d);return g=c+d,e}),
                window.cancelAnimationFrame||(window.cancelAnimationFrame=function(a){
                    clearTimeout(a)
                }),
                this.options={
                    useEasing:!0,
                    useGrouping:!0,
                    separator:",",
                    decimal:"."
                };for(var j in f)f.hasOwnProperty(j)&&(this.options[j]=f[j]);
                ""===this.options.separator&&(this.options.useGrouping=!1),
                this.options.prefix||(this.options.prefix=""),
                this.options.suffix||(this.options.suffix=""),
                this.d="string"==typeof a?document.getElementById(a):a,
                this.startVal=Number(b),
                isNaN(b)&&(this.startVal=Number(b.match(/[\d]+/g).join(""))),
                this.endVal=Number(c),
                isNaN(c)&&(this.endVal=Number(c.match(/[\d]+/g).join(""))),
                this.countDown=this.startVal>this.endVal,this.frameVal=this.startVal,this.decimals=Math.max(0,d||0),this.dec=Math.pow(10,this.decimals),this.duration=1e3*Number(e)||2e3;var k=this;this.version=function(){return"1.5.3"},this.printValue=function(a){var b=isNaN(a)?"--":k.formatNumber(a);"INPUT"==k.d.tagName?this.d.value=b:"text"==k.d.tagName?this.d.textContent=b:this.d.innerHTML=b},this.easeOutExpo=function(a,b,c,d){return 1024*c*(-Math.pow(2,-10*a/d)+1)/1023+b},this.count=function(a){k.startTime||(k.startTime=a),k.timestamp=a;var b=a-k.startTime;k.remaining=k.duration-b,k.frameVal=k.options.useEasing?k.countDown?k.startVal-k.easeOutExpo(b,0,k.startVal-k.endVal,k.duration):k.easeOutExpo(b,k.startVal,k.endVal-k.startVal,k.duration):k.countDown?k.startVal-(k.startVal-k.endVal)*(b/k.duration):k.startVal+(k.endVal-k.startVal)*(b/k.duration),k.frameVal=k.countDown?k.frameVal<k.endVal?k.endVal:k.frameVal:k.frameVal>k.endVal?k.endVal:k.frameVal,k.frameVal=Math.round(k.frameVal*k.dec)/k.dec,k.printValue(k.frameVal),b<k.duration?k.rAF=requestAnimationFrame(k.count):k.callback&&k.callback()},this.start=function(a){return k.callback=a,isNaN(k.endVal)||isNaN(k.startVal)||k.startVal===k.endVal?(console.log("countUp error: startVal or endVal is not a number"),k.printValue(c)):k.rAF=requestAnimationFrame(k.count),!1},this.pauseResume=function(){k.paused?(k.paused=!1,delete k.startTime,k.duration=k.remaining,k.startVal=k.frameVal,requestAnimationFrame(k.count)):(k.paused=!0,cancelAnimationFrame(k.rAF))},this.reset=function(){k.paused=!1,delete k.startTime,k.startVal=b,cancelAnimationFrame(k.rAF),k.printValue(k.startVal)},this.update=function(a){cancelAnimationFrame(k.rAF),k.paused=!1,delete k.startTime,k.startVal=k.frameVal,k.endVal=Number(a),k.countDown=k.startVal>k.endVal,k.rAF=requestAnimationFrame(k.count)},this.formatNumber=function(a){a=a.toFixed(k.decimals),a+="";var b,c,d,e;if(b=a.split("."),c=b[0],d=b.length>1?k.options.decimal+b[1]:"",e=/(\d+)(\d{3})/,k.options.useGrouping)for(;e.test(c);)c=c.replace(e,"$1"+k.options.separator+"$2");return k.options.prefix+c+d+k.options.suffix},k.printValue(k.startVal)};return d});
    js:代码
    <script>
    // 数字动态
    var options = {
    useEasing : true,
    useGrouping : true,
    separator : ',',
    decimal : '.',
    prefix : '',
    suffix : ''
    };
    var hd1 = $('#num1').text();
    var demo = new CountUp("num1", 0, hd1, 0, 1.5, options);
    demo.start();
    var hd2 = $('#num2').text();
    var demo = new CountUp("num2", 0, hd2, 0, 3.5, options);
    demo.start();
    var hd3 = $('#num3').text();
    var demo = new CountUp("num3", 0, hd3, 0, 3.5, options);
    demo.start();
    </script>
    具体的时间可以自己调动!

    希望可以帮到你!

  • 相关阅读:
    DirectUI精髓之一 控件布局的自动缩放(弹簧特性)
    windows mobile6.5截屏工具
    实现的ATL(AtlSimpleArray)数组任意插入辅助函数
    动态库中单例一记
    ASP.NET组件设计Step by Step(4)
    Asp.net 中服务端控件事件是如何触发的
    PagesSection.EnableEventValidation 属性
    ASP.NET事件回传机制
    (服务器控件)页面框架处理回发数据的过程
    ASP.NET底层架构
  • 原文地址:https://www.cnblogs.com/yjq1021/p/7755170.html
Copyright © 2011-2022 走看看