Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.03.2017, 12:03
Новичок на форуме
Отправить личное сообщение для yourmaze Посмотреть профиль Найти все сообщения от yourmaze
 
Регистрация: 11.05.2016
Сообщений: 3

Прокрутка чисел при скроллинге
Здравствуйте, уважаемые форумчане!
Начинаю изучать JS, написал скрипт, который при скроллинге прокручивает числа от 0 до значений которые указаны в html блоках.
И мне кажется, что код слишком далек от идеального. Например, как мне кажется, вечно срабатывает событие scroll, даже если прокрутка уже не требуется. Нужны ваши советы как можно улучшить код(оптимизировать, сделать более читаемым и вообще все что придет в голову). Спасибо

<section id="numbers">
				<div class="number-block">
					<div class="number">160</div>
				</div>
				<div class="number-block">
					<div class="number">600</div>
				</div>
				<div class="number-block">
					<div class="number">73</div>
				</div>
				<div class="number-block">
					<div class="number">96</div>
				</div>
				<div class="number-block">
					<div class="number">200000</div>
				</div>
				<div class="number-block">
					<div class="number">200</div>
				</div>
	</section>


$(function() {
        var distance_for_numbers = $('#numbers').offset().top - $(window).height();
        var flag = 0;

        $(window).scroll(function(){
            if($(window).scrollTop() > distance_for_numbers && flag == 0){
                flag = 1;

                $(".number").each(function (i, el) {
                    var currValue = $(this).text();
                    console.log(currValue);
                    
                    var props = {
                        "from": {
                            "count": 0
                        },
                        "to": {
                            "count": currValue
                        }
                    };

                    $(props.from).animate(props.to, {
                        duration: 1700 * 1,
                        step: function (now, fx) {
                            $(el).text(Math.ceil(now));
                        },
                        complete:function() {
                            if (el.dataset.sym !== undefined) {
                                el.textContent = el.textContent.concat(el.dataset.sym)
                            }
                        }
                    });

                });
            }
        });
    });
Ответить с цитированием
  #2 (permalink)  
Старый 18.03.2017, 12:21
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

yourmaze,
анимация чисел в зоне видимости jquery
Ответить с цитированием
  #3 (permalink)  
Старый 18.03.2017, 16:26
Аватар для Paguo-86PK
Профессор
Отправить личное сообщение для Paguo-86PK Посмотреть профиль Найти все сообщения от Paguo-86PK
 
Регистрация: 16.09.2009
Сообщений: 253

http://jsfiddle.net/Alikberov/u9ott31p/
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смена класса при скроллинге Dayros Общие вопросы Javascript 17 24.01.2017 20:32
Дергается блок при скроллинге gumplen jQuery 4 31.05.2013 01:59
Изменение чисел при передаче в БД FoxTrix Серверные языки и технологии 9 05.03.2013 22:44
Зафиксировать элемент при скроллинге. icebergcap Events/DOM/Window 3 20.01.2013 15:58
Скролл контента при помощи Drag&Drop, как прокрутка в Google Maps Deprime Элементы интерфейса 1 24.12.2012 15:47