Для создания плавного скролла с библиотекой Locomotive
Scroll используется конструктор
new LocomotiveScroll(options), где options —
это объект с настройками поведения и внешнего вида. Базовый пример:
const scroll = new LocomotiveScroll({
el: document.querySelector('#scroll-container'),
smooth: true
});
Здесь el указывает на контейнер скролла, а
smooth включает плавную анимацию.
el (обязательный)Тип: HTMLElement Элемент-контейнер, в котором происходит
прокрутка. Обычно это div с контентом страницы.
nameТип: string Позволяет задать имя экземпляра скролла.
Используется для работы с несколькими экземплярами одновременно.
const scroll = new LocomotiveScroll({
el: document.querySelector('#scroll-container'),
name: 'mainScroll'
});
smoothТип: boolean Включает или отключает плавную
прокрутку.
true — плавная прокрутка с использованием
requestAnimationFrame и трансформаций.false — стандартный нативный скролл браузера.directionТип: 'vertical' | 'horizontal' Направление прокрутки. По
умолчанию — 'vertical'. Используется для горизонтальных
лендингов и слайдеров.
direction: 'horizontal'
gestureDirectionТип: 'vertical' | 'horizontal' | 'both' Определяет
направление, в котором пользователь может прокручивать контент с помощью
тач-жестов на мобильных устройствах.
reloadOnContextChangeТип: boolean Перезагружает скролл при изменении размеров
или контекста документа. Особенно важно для адаптивных страниц.
lerpТип: number Коэффициент плавности анимации скролла.
Диапазон: 0 — мгновенное следование за пользователем,
1 — очень медленное. Рекомендуемые значения:
0.1 – 0.15 для естественного эффекта.
smoothMobileТип: boolean Включает плавную прокрутку на мобильных
устройствах. По умолчанию false, так как на слабых
телефонах это может снизить производительность.
smoothTabletТип: boolean Аналогично smoothMobile, но
для планшетов.
tablet и
smartphoneТип: object Настройки адаптивного поведения скролла.
Пример:
tablet: {
smooth: true,
breakpoint: 1024
},
smartphone: {
smooth: false,
breakpoint: 768
}
breakpoint определяет ширину экрана, при которой
включается данный набор настроек.
getSpeedТип: boolean Если true, экземпляр будет
вычислять текущую скорость прокрутки (scroll.speed).
getDirectionТип: boolean Если true, экземпляр будет
отслеживать направление прокрутки (scroll.direction).
classТип: string CSS-класс, который добавляется к контейнеру
скролла. По умолчанию — 'is-inview'.
scrollFromAnywhereТип: boolean Разрешает скролл не только по области
контейнера, но и при прокрутке страницы в целом.
resetNativeScrollТип: boolean Включение сброса стандартного скролла
браузера. Необходим при использовании smooth: true.
repeatТип: boolean Если true, элементы с
анимациями могут повторно активироваться при повторном появлении в зоне
видимости.
multiplierТип: number Множитель для скорости прокрутки. Полезно
для создания ускоренной или замедленной прокрутки.
multiplier: 1.5 // на 50% быстрее
inertiaТип: number Контролирует инерцию прокрутки при
smooth: true. Более высокие значения создают эффект
«плавного затухания».
touchMultiplierТип: number Регулирует чувствительность прокрутки при
свайпе на сенсорных устройствах.
scrollbarТип: boolean | HTMLElement Добавляет кастомный скроллбар
или принимает элемент, который будет использоваться как скроллбар.
Пример:
scrollbar: document.querySelector('.custom-scrollbar')
resetByVisibilityТип: boolean Если true, скролл
автоматически сбрасывается для элементов, которые становятся видимыми
после скрытия.
classToObserveТип: string CSS-класс для отслеживаемых элементов в
контейнере скролла. Обычно используется с анимациями.
reloadOnResizeТип: boolean Перезагружает скролл при изменении размера
окна.
watchElementsТип: boolean Активирует автоматическое отслеживание
элементов с data-scroll и data-scroll-speed
атрибутами.
data-scroll: помечает элемент для отслеживания
библиотекой.data-scroll-speed: задаёт скорость прокрутки
относительно основного скролла.data-scroll-direction:
'vertical' | 'horizontal'. Определяет направление движения
элемента.data-scroll-delay: задаёт задержку анимации при
движении элемента.data-scroll-class: кастомный CSS-класс, который
добавляется при попадании элемента в зону видимости.const scroll = new LocomotiveScroll({
el: document.querySelector('#scroll-container'),
smooth: true,
direction: 'vertical',
gestureDirection: 'both',
reloadOnContextChange: true,
lerp: 0.1,
smoothMobile: true,
tablet: { smooth: true, breakpoint: 1024 },
smartphone: { smooth: false, breakpoint: 768 },
getSpeed: true,
getDirection: true,
scrollbar: true,
multiplier: 1.2,
repeat: true,
touchMultiplier: 2
});
Такой объект опций позволяет гибко управлять поведением скролла на разных устройствах, задавать плавность, направление, чувствительность тач-жестов, кастомные классы и реакцию на видимость элементов.