/ Scripts & jquery / Набирающиеся цифры

Набирающиеся цифры

HIT

29.06.2019

1134

Нашел простое решение на jQuery чтобы сделать набирающиеся цифры при загрузке страницы. Доработал решение viewportChecker, чтобы цифры набирались только при появлении блока с ними на экране.

jQuery("#advantage").viewportChecker({
	callbackFunction: function(elem, action){
		$('.count').each(function () {
			var $this = $(this);
			jQuery({ Counter: 0 }).animate({ Counter: $this.attr('data-stop') }, {
				duration: 1000,
				easing: 'swing',
				step: function (now) {
					$this.text(Math.ceil(now));
				}
			});
		});
	}
});

Верстка:

<div id="advantage">
	<div><p><span class="count" data-stop="2012">0</span></p><span>год открытия</span></div>		
	<div><p><span class="count" data-stop="3">0</span></p><span>филиала на ЮГЕ РОССИИ</span></div>
	<div><p><span class="count" data-stop="30">0</span></p><span>квалифицированных сотрудников</span></div>		
	<div><p><span class="count" data-stop="800">0</span></p><span>объектов укомплектованных «под ключ»</span></div>
</div>

Тут важны класс count и атрибут data-stop, внутри блока ставим 0. Привожу верстку целиком, тут неплохое решение для текстовых преимуществ.

Стили:

#advantage {margin-bottom: 30px; display: flex; margin-left: -1%; margin-right: -1%;}

#advantage > div {
    display: inline-block;
    width: 23%;
    margin: 0 1%;
    padding: 50px 15px;
    border: 1px solid #eee;
	text-align: center;
}

#advantage > div > p {text-align: center; font-weight: bold; color: #ff9800; font-size: 30px; line-height: 25px;}

#advantage > div > p > span {font-size: 46px; line-height: 50px;}

#advantage > div > span {font-style: italic;}

@media screen and (max-device-width: 800px) { 
	#advantage {flex-wrap: wrap;}
	#advantage > div {width: 48%; margin-bottom: 15px;} 
}
  
@media screen and (max-device-width: 480px) { 
	#advantage > div {width: 100%; margin: 0 0 20px 0; height: auto; opacity: 1;} 
    #advantage > div:last-child {margin-bottom: 0;}
}

На основе этого скрипта можно придумать много интересных реализаций на подобии Progresscircle.

[warning]Вышеописанное решение имеет один недостаток. Все блоки с цифрами при появлении хотя бы одного на экране начинают набирать значения. Если будет несколько блоков, то они наберутся при появлении первого.[/warning]

Множества блоков с набирающимися цифрами

Также в этом скрипте заложена автоматические атрибуты нужных блоков

<div id="features-6"><div class="wrapper"><div class="items columns-4 number-text-vertical counter">
	
	<div class="item"><div>
		<div class="number">365</div>
		<div class="text">
		<h3>Дней в году</h3>
		</div>	
	</div></div>
	
	<div class="item"><div>
		<div class="number">24</div>
		<div class="text">
		<h3>Часа в сутках</h3>
		</div>	
	</div></div>
	
	<div class="item"><div>
		<div class="number">60</div>
		<div class="text">
		<h3>Секунд в минуте</h3>
		</div>	
	</div></div>
				
	<div class="item"><div>
		<div class="number">12</div>
		<div class="text">
		<h3>Месяцев в году</h3>
		</div>	
	</div></div>

	<div class="item"><div>
		<div class="number">8766</div>
		<div class="text">
		<h3>Часов в году</h3>
		</div>	
	</div></div>

	<div class="item"><div>
		<div class="number">384 400</div>
		<div class="text">
		<h3>Расстояние до луны (км)</h3>
		</div>	
	</div></div>
	
</div></div></div>

Скрипт:

jQuery(document).ready(function($){		
	
	// Набирающиеся цифры

	jQuery('.counter .number').each(function(index){
		
		var $this = jQuery(this);
		var $number = jQuery(this).text();
		jQuery(this).attr('data-stop',$number);
		jQuery(this).text('0');		

		$this.viewportChecker({

			offset: 200,
			callbackFunction:function(elem,action){
					
				jQuery({ Counter: 0 }).animate({ Counter: $this.attr('data-stop') }, {
					duration: 1000,
					easing: 'swing',
					step: function (now) {
						$this.text(Math.ceil(now));
					}
				});					

			}
		});

	});
	
});

Поделиться в соц. сетях:

  • Комментарии
  • Вложения

Добавить комментарий

Пока нет комментариев. Будь первым!

Набирающиеся цифры Набирающиеся цифры
Таймер обратного отcчета
Рекомендации для васТаймер обратного отcчетаOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.