<style>
    #hight {
        width: 100%;
        height: 1280px;
        position: relative;
    }
</style>

<div id="hight"></div>

<div id="counter">
    <span class="counter-value" data-count="64">64</span><span class="number_turns">%</span>
    <span class="counter-value" data-count="70">70</span><span class="number_turns">%</span>
    <span class="counter-value" data-count="100">100</span><span class="number_turns">%</span>
</div>
<br>
<br>
<br>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<script>
    var a = 0;
    $(window).scroll(function() {

        console.log( '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' );
        console.log( '#counter.width()=' + $('#counter').width() );
        console.log( '#counter.height()=' + $('#counter').height() );
        console.log( '#counter.innerWidth()=' + $('#counter').innerWidth() );
        console.log( '#counter.innerHeight()=' + $('#counter').innerHeight() );
        console.log( '#counter.outerWidth()=' + $('#counter').outerWidth() );
        console.log( '#counter.outerHeight()=' + $('#counter').outerHeight() );
        console.log( '#counter.offset().top=' + $('#counter').offset().top ); // =$(window).scrollTop()
        console.log( 'window.innerHeight=' + window.innerHeight );
        console.log( 'window.scrollTop()                      =' + $(window).scrollTop() );
        var oTop = $('#counter').offset().top - window.innerHeight;
        console.log( '#counter.offset().top-window.scrollTop()=' + oTop );
        console.log( 'see the counter if window.scrollTop() > (#counter.offset().top - window.innerHeight)');


        var oTop = $('#counter').offset().top - window.innerHeight;
        if (a == 0 && $(window).scrollTop() > oTop) {
            $('.counter-value').each(function() {
                var $this = $(this),
                countTo = $this.attr('data-count');
                $({
                countNum: 0
                }).animate({
                    countNum: countTo
                },
                {
                    duration: 2000,
                    easing: 'swing',
                    step: function() {
                        $this.text(Math.floor(this.countNum));
                    },
                        complete: function() {
                        $this.text(this.countNum);
                    }
                });
            });
            a = 1;
        }
    });
</script>

參考 https://codepen.io/dmcreis/pen/VLLYPo

Related posts 相關文章
挖礦程式利用 WebAssembly 埋在網頁裡挑避檢測
More...
WordPress 網站被注入惡意 js,並竊取 WooCommerce 信用卡資料
More...
JSshell – 利用 XSS 漏洞遠端控制 shell
More...
當 submit button 用了 onClick,它的 function 名稱不可以一樣
More...

作者

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。