Библиотека Locomotive Scroll реализует кастомное
скроллирование с плавной анимацией, поддержкой параллакса и триггеров
при появлении элементов. Основу её работы составляет создание экземпляра
класса LocomotiveScroll с передачей объекта настроек в
конструктор. Рассмотрим подробно все доступные параметры и их влияние на
поведение скролла.
el — контейнер скроллаОбязательный параметр. Определяет DOM-элемент, внутри которого будет происходить прокрутка. Обычно это блок, содержащий весь контент страницы, например:
const scroll = new LocomotiveScroll({
el: document.querySelector('#main-container')
});
Особенности:
display: none, скролл работать
не будет.smooth — плавность
скроллаТип: boolean Значение по умолчанию:
false
Определяет, будет ли прокрутка сглаженной с эффектом инерции. Если
установлено true, библиотека скрывает нативный скролл и
обрабатывает движение вручную с плавной анимацией.
smooth: true
Важные моменты:
scroll у нативного окна.smartphone для включения плавного
скролла на мобильных устройствах.direction —
направление скроллаТип: 'vertical' | 'horizontal' Значение по умолчанию:
'vertical'
Позволяет задавать направление прокрутки. По умолчанию вертикальное,
но для горизонтальных лендингов используется
'horizontal'.
direction: 'horizontal'
Примечания:
smoothMobile —
плавность на мобильныхТип: boolean Значение по умолчанию:
false
Включает сглаженную прокрутку на мобильных устройствах, когда
smooth уже активирован. Используется совместно с
smartphone: { smooth: true }.
lerp — коэффициент
интерполяцииТип: number (от 0 до 1) Значение по умолчанию:
0.1
Определяет скорость сглаживания скролла. Чем ближе к 1, тем быстрее элементы догоняют целевую позицию, чем меньше — тем более плавный и инерционный скролл.
lerp: 0.08
Советы:
reloadOnContextChange
— перезапуск при изменении контекстаТип: boolean Значение по умолчанию:
false
Если установлено true, Locomotive Scroll автоматически
пересчитывает размеры и позиции при изменении DOM или при смене
медиа-контекста. Полезно при динамическом контенте.
getDirection
— отслеживание направленияТип: boolean Значение по умолчанию:
false
Позволяет получать текущее направление движения скролла
(up, down, left,
right) через событие scroll.
scroll.on('scroll', (obj) => {
console.log(obj.direction); // up / down
});
getSpeed —
отслеживание скоростиТип: boolean Значение по умолчанию:
false
Позволяет вычислять скорость прокрутки. Значение speed
можно использовать для динамических эффектов, например, увеличения
масштаба при быстром скролле.
scroll.on('scroll', (obj) => {
console.log(obj.speed); // число, скорость прокрутки
});
class — класс
активного элементаТип: string Значение по умолчанию:
'is-reveal'
Используется для автоматического добавления класса к элементам с
атрибутом data-scroll при попадании в видимую область.
class: 'active-scroll'
Применение:
offset — смещение
появленияТип: number или array Значение по
умолчанию: 0
Задает вертикальное или горизонтальное смещение для элементов с
data-scroll. Позволяет запускать анимацию до или после
фактического попадания элемента в видимую область.
offset: 100
или
offset: [0, 50] // по вертикали и горизонтали
repeat — повторение
анимацииТип: boolean Значение по умолчанию:
false
Если true, элементы с data-scroll будут
повторно активироваться при повторном попадании в область видимости.
tablet и
smartphone — адаптивные настройкиОба параметра принимают объект с теми же ключами, что и основной конструктор, например:
smartphone: {
smooth: false,
direction: 'vertical'
},
tablet: {
smooth: true,
direction: 'vertical'
}
Особенности:
resetNativeScroll
— сброс нативного скроллаТип: boolean Значение по умолчанию:
true
Если установлено false, нативный скролл остаётся
активным, что может быть полезно для страниц с фиксированными элементами
или нестандартной версткой.
Пример полной инициализации с кастомными параметрами:
const scroll = new LocomotiveScroll({
el: document.querySelector('#main-container'),
smooth: true,
direction: 'vertical',
lerp: 0.1,
getDirection: true,
getSpeed: true,
class: 'is-reveal',
offset: [0, 100],
repeat: false,
smartphone: { smooth: false },
tablet: { smooth: true }
});
В этом примере учитываются ключевые возможности библиотеки: плавность, управление направлением, отслеживание скорости и направления, кастомные классы для анимаций и адаптивные настройки для разных устройств.
Все параметры конструктора Locomotive Scroll позволяют гибко настраивать поведение скролла и создавать сложные анимационные эффекты с высокой производительностью.