for (let i = 0; i < linkNav.length; i++) {
linkNav[i].addEventListener('click', function (e) {
e.preventDefault();
setTimeout(() => {
let w = window.pageYOffset,
hash = this.href.replace(/[^#]*(.*)/, '$1');
let t = document.querySelector(hash).getBoundingClientRect().top,
start = null;
requestAnimationFrame(step);
function step(time) {
if (start === null) start = time;
let progress = time - start,
r = (t < 0 ? Math.max(w - progress / V, w + t) : Math.min(w + progress / V, w + t));
window.scrollTo(0, r);
if (r != w + t) {
requestAnimationFrame(step)
}
}
}, 830);
}, false);
}
таймаут в переменную возьми, при скролле очищай его, чтобы отменился
Обсуждают сегодня