简体   繁体   English

数字动画开始向下滚动

[英]Number Animation starting on scroll down

I've used the following Number Animation on my website: http://codepen.io/syedrafeeq/details/rcfsJ/ 我在网站上使用了以下数字动画: http : //codepen.io/syedrafeeq/details/rcfsJ/

However, the animation do not start at that specific page section but starts only when I refresh the page. 但是,动画不是从该特定页面部分开始,而是仅在刷新页面时才开始。 I would like it to trigger when the visitor scroll down till that page section. 当访客向下滚动到该页面部分时,我希望它触发。

How can I make this? 我该怎么做?

JQuery jQuery查询

(function ($) {
    $.fn.countTo = function (options) {
        options = options || {};

        return $(this).each(function () {
            // set options for current element
            var settings = $.extend({}, $.fn.countTo.defaults, {
                from:            $(this).data('from'),
                to:              $(this).data('to'),
                speed:           $(this).data('speed'),
                refreshInterval: $(this).data('refresh-interval'),
                decimals:        $(this).data('decimals')
            }, options);

            // how many times to update the value, and how much to increment the value on each update
            var loops = Math.ceil(settings.speed / settings.refreshInterval),
                increment = (settings.to - settings.from) / loops;

            // references & variables that will change with each update
            var self = this,
                $self = $(this),
                loopCount = 0,
                value = settings.from,
                data = $self.data('countTo') || {};

            $self.data('countTo', data);

            // if an existing interval can be found, clear it first
            if (data.interval) {
                clearInterval(data.interval);
            }
            data.interval = setInterval(updateTimer, settings.refreshInterval);

            // initialize the element with the starting value
            render(value);

            function updateTimer() {
                value += increment;
                loopCount++;

                render(value);

                if (typeof(settings.onUpdate) == 'function') {
                    settings.onUpdate.call(self, value);
                }

                if (loopCount >= loops) {
                    // remove the interval
                    $self.removeData('countTo');
                    clearInterval(data.interval);
                    value = settings.to;

                    if (typeof(settings.onComplete) == 'function') {
                        settings.onComplete.call(self, value);
                    }
                }
            }

            function render(value) {
                var formattedValue = settings.formatter.call(self, value, settings);
                $self.html(formattedValue);
            }
        });
    };

    $.fn.countTo.defaults = {
        from: 0,               // the number the element should start at
        to: 0,                 // the number the element should end at
        speed: 1000,           // how long it should take to count between the target numbers
        refreshInterval: 100,  // how often the element should be updated
        decimals: 0,           // the number of decimal places to show
        formatter: formatter,  // handler for formatting the value before rendering
        onUpdate: null,        // callback method for every time the element is updated
        onComplete: null       // callback method for when the element finishes updating
    };

    function formatter(value, settings) {
        return value.toFixed(settings.decimals);
    }
}(jQuery));

jQuery(function ($) {
  // custom formatting example
  $('.count-number').data('countToOptions', {
    formatter: function (value, options) {
      return value.toFixed(options.decimals).replace(/\B(?=(?:\d{3})+(?!\d))/g, ',');
    }
  });

  // start all the timers
  $('.timer').each(count);  

  function count(options) {
    var $this = $(this);
    options = $.extend({}, options || {}, $this.data('countToOptions') || {});
    $this.countTo(options);
  }
});

My HTML: 我的HTML:

<section id="Four" class="wrapper style3">
                <div class="inner">
                    <div class="container">
                        <div class="row">
                                <div class="two columns">
                                <i class="fa fa-truck fa-5x"></i>
                                <h3>A Fleet of</h3>
                                <div class="counter col_fourth">
                                <h2 class="timer count-title count-number" data-to="120" data-speed="2000"></h2>
                                </div>
                                <p class="text-box">TRUCKS</p>
                            </div>
                                <div class="two columns">
                                <i class="fa fa-users fa-5x"></i>
                                <h3>Involving</h3>
                                <div class="counter col_fourth">
                                <h2 class="timer count-title count-number" data-to="160" data-speed="2000"></h2>
                                </div>
                                <p class="text-box">EMPLOYEES</p>
                            </div>
                                <div class="two columns">
                                <i class="fa fa-cubes fa-5x"></i>
                                <h3>Loading</h3>
                                <div class="counter col_fourth">
                                <h2 class="timer count-title count-number" data-to="6686" data-speed="2000"></h2>
                                </div>
                                <p class="text-box">FTL LOADS IN 2016</p>
                            </div>
                                <div class="two columns">
                                <i class="fa fa-leaf fa-5x"></i>
                                <h3>Emissions</h3>
                                <div class="counter col_fourth">
                                <h2 class="timer count-title count-number" data-to="100" data-speed="2000"></h2>
                                </div>
                                <p class="text-box">100% EURO 6</p>
                            </div>
                                <div class="two columns">
                                <i class="fa fa-compress fa-5x"></i>
                                <h3>Trailers</h3>
                                <div class="counter col_fourth">
                                <h2 class="timer count-title count-number" data-to="160" data-speed="2000"></h2>
                                </div>
                                <p class="text-box">TRAILERS</p>
                            </div>
                                <div class="two columns">
                                <i class="fa fa-calendar fa-5x"></i>
                                <h3>Since</h3>
                                <div class="counter col_fourth">
                                <h2 class="timer count-title count-number" data-to="1991" data-speed="2000"></h2>
                                </div>
                                <p class="text-box">25 YEARS OF SERVICE</p>
                            </div>
                        </div>
                    </section>
                </div>
            </div>
        </section>**strong text**

You can use jQuery Waypoints Plugin to trigger the animation when you scroll to that section. 滚动到该部分时,可以使用jQuery Waypoints插件来触发动画。 Download library and import it in you HTML. 下载库并将其导入HTML。 And then just determine the point where it should be triggered. 然后只需确定触发点。 Something like this. 这样的事情。

var waypoint = new Waypoint({
  element: document.getElementById('Four'),
  handler: function(direction) {
    //Put here or call your javascript code for animation
  },
  offset: 50%
})

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM