Для создания плавной прокрутки с помощью библиотеки Locomotive Scroll
используется объект LocomotiveScroll. Инициализация
происходит через конструктор с передачей конфигурационного объекта:
const scroll = new LocomotiveScroll({
el: document.querySelector('[data-scroll-container]'),
smooth: true,
direction: 'vertical',
lerp: 0.1
});
Обязательный параметр:
el — DOM-элемент, который служит контейнером для
прокрутки. Обычно используется селектор
[data-scroll-container].smooth (Boolean | Object) —
включает плавную прокрутку. Значение true активирует
плавную вертикальную прокрутку. Можно передать объект для расширенной
настройки:smooth: {
smartphone: false,
tablet: true
}
direction (String) —
направление прокрутки: 'vertical' или
'horizontal'.
gestureDirection (String)
— направление прокрутки при сенсорных устройствах: 'both',
'vertical', 'horizontal'.
lerp (Number) —
коэффициент сглаживания анимации. Значение от 0 до
1. Чем ближе к 1, тем менее заметно замедление при
прокрутке.
reloadOnContextChange
(Boolean) — перезапуск скрипта при изменении контекста
(например, при ресайзе).
Locomotive Scroll позволяет задавать индивидуальные параметры для разных устройств:
smooth: true,
smartphone: {
smooth: false,
breakpoint: 768
},
tablet: {
smooth: true,
breakpoint: 1024
}
breakpoint — максимальная ширина экрана для применения
настроек.smooth — включает или отключает плавную прокрутку для
устройства.inertia (Number) —
альтернатива lerp. Определяет плавность движения и
инерцию.
class (String) — класс,
добавляемый к элементу при активации Locomotive Scroll.
scrollingClass (String) —
класс, добавляемый во время прокрутки.
draggingClass (String) —
класс для состояния перетаскивания на мобильных устройствах.
reloadOnContextChange
(Boolean) — перезапуск библиотеки при изменении контекста,
полезно при динамическом изменении DOM.
offset (Number | Array) —
смещение для триггеров событий call и scroll.
Можно задать как число пикселей или массив
[topOffset, bottomOffset].
repeat (Boolean) —
указывает, следует ли повторно активировать события для элементов,
вышедших и снова вошедших в зону видимости.
resetNativeScroll
(Boolean) — сброс стандартного скролла браузера при активации
Locomotive Scroll.
getDirection (Boolean) —
отслеживание направления прокрутки (up или
down).
getSpeed (Boolean) —
получение скорости прокрутки в реальном времени.
При использовании горизонтальной прокрутки параметры
direction: 'horizontal' и
gestureDirection: 'both' управляют поведением.
horizontal (Boolean) —
включает горизонтальную прокрутку.scrollbar (Boolean) —
отображение кастомного скроллбара.scrollbar: true
smoothMobile (Boolean) —
плавная прокрутка на мобильных устройствах, влияет на горизонтальные
свайпы.Locomotive Scroll поддерживает несколько видов событий:
scroll — вызывается при каждом
изменении позиции.call — триггер для кастомных функций
на элементах с data-scroll-call.enter / leave — событие
входа или выхода элемента из зоны видимости.Пример использования:
scroll.on('call', (func, way, obj) => {
console.log(func, way, obj);
});
func — имя функции, указанное в
data-scroll-call.way — 'enter' или
'leave'.obj — объект с информацией об элементе и его
позиции.multiplier (Number) —
коэффициент увеличения скорости прокрутки.
resetNativeScroll
(Boolean) — отключение нативного скролла браузера для
предотвращения конфликтов.
class,
scrollingClass,
draggingClass — позволяют гибко
стилизовать элементы при скролле и взаимодействии пользователя.
direction и
gestureDirection могут работать совместно
для создания гибридной прокрутки, комбинируя вертикальную и
горизонтальную.
reloadOnContextChange необходим при
динамических интерфейсах с подгрузкой контента, чтобы библиотека
пересчитывала позиции элементов.
const scroll = new LocomotiveScroll({
el: document.querySelector('[data-scroll-container]'),
smooth: true,
direction: 'vertical',
gestureDirection: 'both',
lerp: 0.1,
multiplier: 1,
class: 'is-inview',
scrollingClass: 'is-scrolling',
draggingClass: 'is-dragging',
offset: [0, 0],
repeat: false,
getDirection: true,
getSpeed: true,
smartphone: { smooth: false, breakpoint: 768 },
tablet: { smooth: true, breakpoint: 1024 },
reloadOnContextChange: true
});
Эта конфигурация охватывает полный набор параметров, обеспечивая максимальный контроль над поведением прокрутки и взаимодействием с DOM.