Библиотека Smooth Scroll предоставляет гибкий контроль над поведением прокрутки, позволяя задавать параметры скорости и длительности анимации. Эти параметры определяют, как быстро страница перемещается к целевому элементу, а также ощущение плавности и естественности движения.
speedspeed — это основной параметр, который отвечает за
скорость анимации прокрутки. Он задается в
миллисекундах и определяет время, за которое произойдет
переход к указанному элементу.
Пример использования:
const scroll = new SmoothScroll('a[href*="#"]', {
speed: 800, // анимация займет 800 мс
});
Важно учитывать длину страницы: при коротких переходах слишком большая длительность может казаться излишней, а при длинных — слишком короткая скорость выглядит резкой.
speedAsDurationПо умолчанию Smooth Scroll рассчитывает длительность анимации исходя
из расстояния до цели. Параметр
speedAsDuration позволяет зафиксировать скорость по
времени, игнорируя расстояние.
const scroll = new SmoothScroll('a[href*="#"]', {
speed: 600,
speedAsDuration: true, // длительность анимации не зависит от расстояния
});
Использование speedAsDuration: true полезно для страниц
с короткими секциями, когда нужно гарантировать, что переход всегда
займёт одинаковое время.
easingДля более естественного движения можно применять функцию сглаживания (easing). Она влияет на то, как меняется скорость анимации в процессе прокрутки: ускоряется в начале, замедляется в конце и наоборот.
Пример с пользовательской функцией:
const scroll = new SmoothScroll('a[href*="#"]', {
speed: 800,
easing: 'easeInOutCubic'
});
Популярные предустановленные варианты:
linear — равномерная скорость движения.easeInQuad — медленный старт, ускорение в
середине.easeOutQuad — быстрое начало, замедление к концу.easeInOutCubic — плавное ускорение и замедление,
наиболее естественное ощущение.Функция easing обеспечивает визуальный комфорт, особенно при длинных прокрутках или сложных анимационных эффектах.
Для тонкой настройки плавности анимации рекомендуется сочетать
скорость (speed) с функцией
easing.
Пример:
const scroll = new SmoothScroll('a[href*="#"]', {
speed: 1000, // длительность 1 секунда
speedAsDuration: false,
easing: 'easeInOutCubic'
});
В этом примере:
easeInOutCubic.Такой подход позволяет добиться ощущения, что страница реагирует «живым» движением, а не резким скачком.
Smooth Scroll позволяет изменять параметры скорости и длительности динамически перед выполнением конкретного перехода. Это полезно, когда на одной странице есть короткие и длинные секции, и требуется разная скорость прокрутки.
Пример:
document.querySelectorAll('a[href*="#"]').forEach(link => {
link.addEventListener('click', function(e) {
e.preventDefault();
const target = document.querySelector(this.getAttribute('href'));
const distance = target.getBoundingClientRect().top;
const scroll = new SmoothScroll();
scroll.animateScroll(target, null, {
speed: distance < 500 ? 500 : 1000,
easing: 'easeInOutCubic'
});
});
});
500 мс).1000 мс).easing обеспечивает единый визуальный стиль
анимации.easeInOutCubic.speedAsDuration: false для
пропорциональной длительности.easing для всех переходов, чтобы
пользователь ощущал стабильное движение.С помощью точной настройки speed,
speedAsDuration и easing Smooth Scroll
позволяет создавать естественные, комфортные и визуально
приятные прокрутки, которые улучшают пользовательский опыт и
делают интерфейс страницы более динамичным и современным.