@KrupAch

Как настроить отступ от верха при плавном переходе к якорю?

Всем доброго времени суток.
Подскажите пожалуйста в чем может быть проблема и как её решить?
Суть такова, что при переходе к якорю, в JS я задаю отступ, и он срабатывает НО только на доли секунды, потом резко прилипает к верху.
var linkNav = document.querySelectorAll('[href^="#"]'), 
    V = 1;  
for (var i = 0; i < linkNav.length; i++) {
    linkNav[i].addEventListener('click', function(e) {
        e.preventDefault(); 
        var w = window.pageYOffset,  
            hash = this.href.replace(/[^#]*(.*)/, '$1');  
        t = document.querySelector(hash).getBoundingClientRect().top -400,  
            start = null;
        requestAnimationFrame(step);  
        function step(time) {
            if (start === null) start = time;
            var 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)
            } else {
                location.hash = hash  
            }
        }
    }, false);
}


Другими словами впечатление, что после отрабатывания скрипта, активируется какое то другое правило...
  • Вопрос задан
  • 50 просмотров
Решения вопроса 1
RAX7
@RAX7
Потому что location.hash = hash прокручивает страницу до якоря. Используй History API чтобы поменять урл в адресной строке.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы