Изменение скорости скрола страницы
Доброго времени суток. Имеется скрипт, который делает делает прокрутку страницы до якоря плавной.
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); } } проблема в том, что хотелось бы сделать скорость прокрутки разной. Т.е. сначала побыстрее, а ближе к концу чтобы скорость замедлялась |
Знакомься с анимацией https://learn.javascript.ru/js-animation
http://jsfiddle.net/xo0ywg88/2/ вот и пример |
Часовой пояс GMT +3, время: 08:43. |