Библиотека Smooth Scroll для JavaScript реализует плавную прокрутку страниц и элементов, управляемую через конфигурационный объект. Конфигурационный объект предоставляет возможность тонкой настройки поведения скролла, его скорости, направления и реакции на различные события. Рассмотрим ключевые свойства и их назначение.
speed Определяет длительность
анимации прокрутки в миллисекундах.
const options = {
speed: 500
};
500.200–1500
для естественного ощущения движения.speedAsDuration Позволяет
использовать значение speed как фиксированное время
анимации вне зависимости от расстояния до цели.
const options = {
speed: 800,
speedAsDuration: true
};
true — скорость игнорирует расстояние, движение всегда
длится указанное время.false — длительность зависит от расстояния между
текущей позицией и целевым элементом.offset Задает смещение от начала
целевого элемента, полезно при фиксированных шапках.
const options = {
offset: 100
};
easing Определяет функцию ускорения
и замедления анимации. Поддерживаются стандартные предустановленные
функции:
lineareaseInQuadeaseOutCubiceaseInOutQuartconst options = {
easing: 'easeInOutCubic'
};updateURL Управляет изменением
адресной строки при прокрутке к якорю.
const options = {
updateURL: false
};
true — URL обновляется с добавлением хеша якоря.false — адресная строка остается неизменной.popstate Позволяет контролировать
действия при навигации через кнопки «Назад» и «Вперед» браузера.
const options = {
popstate: true
};ignore Фильтр элементов, на которые
не распространяется плавная прокрутка.
const options = {
ignore: '[data-no-scroll]'
};
true/false для элемента.Smooth Scroll предоставляет возможность задавать функции-обработчики событий, которые выполняются в определенные моменты прокрутки:
before Вызывается перед началом
анимации.
const options = {
before: function(anchor, toggle) {
console.log('Начало прокрутки к', anchor);
}
};after Выполняется после завершения
прокрутки.
const options = {
after: function(anchor, toggle) {
console.log('Прокрутка завершена');
}
};afterToggle Используется при
переключении состояния, например, при активации элемента
навигации.
customEasing Позволяет задать
собственную функцию расчета прогрессии анимации.
const options = {
customEasing: function(time) {
return time < 0.5
? 4 * time * time * time
: (time - 1) * (2 * time - 2) * (2 * time - 2) + 1;
}
};
time от 0 до
1 и возвращает нормализованное значение прогресса.clip Управляет тем, будет ли
целевой элемент полностью виден после прокрутки.
const options = {
clip: true
};
true — элемент полностью помещается в видимую
область.false — прокрутка может частично скрывать элемент.forceHeight Определяет, нужно ли
автоматически расширять body для прокрутки до конца
страницы.
const options = {
forceHeight: true
};const scroll = new SmoothScroll('a[href*="#"]', {
speed: 700,
speedAsDuration: false,
offset: 80,
easing: 'easeInOutQuart',
updateURL: true,
popstate: true,
ignore: '.no-scroll',
clip: true,
forceHeight: true,
before: function(anchor, toggle) {
console.log('Прокрутка начинается');
},
after: function(anchor, toggle) {
console.log('Прокрутка завершена');
}
});
В этом примере показана комплексная настройка, включающая управление скоростью, смещением, функциями обратного вызова и поведением при навигации. Такой подход обеспечивает полный контроль над анимацией прокрутки и позволяет интегрировать Smooth Scroll в проекты любой сложности.