Задать вопрос

Есть ли плавный скролл между якорями на чистом JS?

Интересует есть ли скрипт для плавного скролла на чистом JS, сайт делаю без использование jQuery
  • Вопрос задан
  • 17604 просмотра
Подписаться 7 Простой Комментировать
Решения вопроса 1
AleksandrB
@AleksandrB
Совсем недавно вывел "Hello world"
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');  // к id элемента, к которому нужно перейти
        t = document.querySelector(hash).getBoundingClientRect().top,  // отступ от окна браузера до id
            start = null;
        requestAnimationFrame(step);  // подробнее про функцию анимации [developer.mozilla.org]
        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  // URL с хэшем
            }
        }
    }, false);
}

<a id="scroll" href="#one">⇩</a> <!-- ссылка, по клику на которую осуществляется прокрутка к якорю -->
<a id="one" name="one"></a> <!-- якорь, расположенный в произвольном месте страницы -->

Если вы об этом
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
sfi0zy
@sfi0zy Куратор тега JavaScript
Creative frontend developer
Для современных браузеров ничего придумывать не нужно, все и так уже есть.
element.scrollIntoView({ behavior: 'smooth' })
Для остальных можно временно заполифиллить.
Ответ написан
yellow79
@yellow79
Senior Software Engineer
Анимация чего угодно на чистом JS https://learn.javascript.ru/js-animation
Ответ написан
Комментировать
SPAHI4
@SPAHI4
реактовцы - это не девы, а прокидыватели пропсов
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы