forked from axiom-team/astroport
45 lines
1.6 KiB
JavaScript
45 lines
1.6 KiB
JavaScript
|
$(document).ready(function(){
|
||
|
var selector = $('.count');
|
||
|
var replay = 'replay'
|
||
|
|
||
|
function isScrolledIntoView(el) {
|
||
|
var docViewTop = $(window).scrollTop();
|
||
|
var docViewBottom = docViewTop + $(window).height();
|
||
|
var elTop = el.offset().top;
|
||
|
var elBottom = elTop + el.height();
|
||
|
return ((elBottom <= docViewBottom) && (elTop >= docViewTop));
|
||
|
}
|
||
|
|
||
|
function animate_numbers(element) {
|
||
|
if (isScrolledIntoView(element)) {
|
||
|
element.addClass('started').css('visibility','visible')
|
||
|
var startnum = element.text();
|
||
|
if(element.text() % 1 === 0 && $.isNumeric(element.text())) {
|
||
|
var step = function () { element.text(Math.ceil(this.Counter)); }
|
||
|
} else if(element.text() % 1 !== 0 && $.isNumeric(element.text())) {
|
||
|
var step = function () { element.text(this.Counter.toFixed(2)); }
|
||
|
}
|
||
|
jQuery({ Counter: 0 }).animate({ Counter: element.text() }, {
|
||
|
duration : 2000,
|
||
|
complete: function() { element.text($.trim(startnum)).addClass('finished').removeClass('started'); },
|
||
|
step: step
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
|
||
|
selector.each(function () {
|
||
|
$(this).css('visibility','hidden');
|
||
|
animate_numbers($(this));
|
||
|
});
|
||
|
|
||
|
$(document).on("scroll", function () {
|
||
|
selector.not('.finished, .started').each(function () {
|
||
|
animate_numbers($(this));
|
||
|
});
|
||
|
selector.each(function () {
|
||
|
if(!isScrolledIntoView($(this)) && $(this).hasClass(replay)) {
|
||
|
$(this).removeClass('finished');
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
});
|