Показать сообщение отдельно
  #1 (permalink)  
Старый 13.04.2015, 17:04
Интересующийся
Отправить личное сообщение для Drm1804 Посмотреть профиль Найти все сообщения от Drm1804
 
Регистрация: 12.03.2015
Сообщений: 18

Изменение скорости скрола страницы
Доброго времени суток. Имеется скрипт, который делает делает прокрутку страницы до якоря плавной.
function smoothlyScroll(){
    var linkNav = document.querySelectorAll('.b-head-nav-item');
    var speed = .5;
    for( i=0 ; i < linkNav.length; i++){
        linkNav[i].addEventListener('click', function(){
            var scrollTop = window.pageYOffset;
            var hash = this.href.replace(/[^#]*(.*)/, '$1');
            var elemToScroll = document.querySelector(hash).getBoundingClientRect().top;
            var start = null;

            requestAnimationFrame(step);
            function step(time){
                console.log(time);
                if (start === null){
                    start = time;
                }
                var progress = time - start;
                console.log(progress);

                var distance = (elemToScroll < 0
                    ? Math.max(scrollTop - progress/speed, scrollTop + elemToScroll)
                    : Math.min(scrollTop + progress/speed, scrollTop + elemToScroll) );

                window.scrollTo(0,distance);
                if(distance != scrollTop + elemToScroll){
                    requestAnimationFrame(step);
                } else {
                    location.hash = hash;
                }
            }
            return false;
        } ,false);


    }
}

проблема в том, что хотелось бы сделать скорость прокрутки разной. Т.е. сначала побыстрее, а ближе к концу чтобы скорость замедлялась
Ответить с цитированием