Довольно часто на страницах сайта приводятся различные числовые величины, в виде некоторых фактов о каких-либо числовых данных. К примеру, для сайта по продаже некоторого товара это может быть некая статистика по продажам товара, количестве на складе, либо другие данные. Чтобы придать немного «жизни» этим цифрам довольно часто разработчики приходят к решению использования некоторой анимации для этих чисел. В данном примере мы рассмотрим один из вариантов реализации подобного решения для вашего сайта.

Работать это будет таким образом, что при попадании блока в видимую область, будет запускаться отсчёт чисел от меньшего к исходному значению в элементе.
Для реализации примера нам потребуется библиотека JQuery, а так же JQuery.Spincrement. Ссылка на библиотеку JQuery.Spincrement вы можете найти в конце поста. Подключать их можно в head -заголовке страницы, либо в самом конце документа.
<script src="/js/jquery-3.2.1.min.js"></script> <script src="/js/jquery.spincrement.min.js"></script>
Разметка довольно простая, в нашем примере блоков всего 4, и выведены они в одну линейку посредством CSS. Вся линейка чисел заключена в блок с классом .inf-fact-counters, который используется для отслеживания позиции данного блока в видимой части экрана. Сами значения чисел указаны в элементе .fct-count span.
<div class="int-fact-counters"> <div class="int-fct-item"> <div class="fct-count"><span>10</span></div> <div class="fct-text">years to our club</div> </div> <div class="int-fct-item"> <div class="fct-count"><span>90</span></div> <div class="fct-text">winners in international competitions</div> </div> <div class="int-fct-item"> <div class="fct-count"><span>12</span></div> <div class="fct-text">gyms equipped with the latest equipment</div> </div> <div class="int-fct-item"> <div class="fct-count"><span>2</span>k</div> <div class="fct-text">people come to us for training every month</div> </div> </div>
Логика тут простая, при загрузке либо скроллинге страницы проверяется позиция элемента с этим классом. Если элемент находится в видимой части экрана, но инициализируется анимация для элемента с классом .fct-count span.
var Animation = function() {
var hFrom = $(window).scrollTop();
var hTo = $(window).scrollTop() + ($(window).height() / 3);
if ($(".int-fact-counters").offset().top > hFrom && $(".int-fact-counters").offset().top < hTo){
$('.fct-count span').delay(500).spincrement({
thousandSeparator: "",
duration: 3000
});
}
};
$(window).scroll(function() {
Animation();
});
Animation();
Инициализация отсчёта происходит с помощью библиотеки jquery-spincrement, и переделать событие по которому будет запускаться отсчёт можно по-своему. В моём случае это положение блока в видимой части сайта. А в действительности можно закрепить реакцию на любом обработчике событий документа.