Для начала необходимо установить библиотеку. В современных проектах это можно сделать через npm или yarn:
npm install locomotive-scroll
# или
yarn add locomotive-scroll
После установки подключение выполняется в JavaScript-файле проекта:
import LocomotiveScroll from 'locomotive-scroll';
import 'locomotive-scroll/dist/locomotive-scroll.css';
Важно подключать CSS-файл библиотеки, так как он содержит базовые стили, необходимые для корректной работы скролла.
Locomotive Scroll требует наличия контейнера, в котором будет
происходить управление прокруткой. Обычно используется элемент с классом
scroll-container:
<div class="scroll-container" data-scroll-container>
<section data-scroll-section>
<h1 data-scroll data-scroll-speed="1">Заголовок</h1>
<p data-scroll data-scroll-speed="2">Текст параграфа</p>
</section>
<section data-scroll-section>
<h2 data-scroll data-scroll-speed="1">Второй блок</h2>
</section>
</div>
Ключевые моменты:
data-scroll-container указывает Locomotive
Scroll, какой элемент использовать как основной контейнер.data-scroll-section.data-scroll. Скорость анимации задаётся через
data-scroll-speed.Минимальная конфигурация инициализации выглядит следующим образом:
const scroll = new LocomotiveScroll({
el: document.querySelector('[data-scroll-container]'),
smooth: true
});
Объяснение параметров:
el — DOM-элемент контейнера, на котором будет
применяться прокрутка.smooth — включает плавную прокрутку (true/false). Без
этого параметра прокрутка будет обычной, браузерной.data-scroll Помечает элемент для отслеживания при скролле. Позволяет управлять скоростью и направлением.
data-scroll-speed Задаёт скорость движения элемента относительно скролла.
1 — обычная скорость2 — в два раза быстрее-1 — движение в противоположном направленииdata-scroll-direction Определяет направление движения элемента:
vertical (по умолчанию)horizontal — для горизонтального эффектаdata-scroll-repeat Позволяет анимации повторяться каждый раз, когда элемент появляется в области видимости.
scroll.update();
scroll.scrollTo('#section2', {
offset: -50, // смещение относительно верха
duration: 1000, // время анимации в мс
easing: [0.25, 0.0, 0.35, 1.0] // кривая ускорения
});
scroll.destroy();
При добавлении новых элементов или изменении размера окна необходимо
вызывать update():
window.addEventListener('resize', () => {
scroll.update();
});
Это гарантирует, что библиотека правильно вычислит позиции всех элементов.
Locomotive Scroll по умолчанию поддерживает мобильные устройства, но иногда рекомендуется включить определённые параметры:
const scroll = new LocomotiveScroll({
el: document.querySelector('[data-scroll-container]'),
smooth: true,
smartphone: {
smooth: true
},
tablet: {
smooth: true
}
});
Такой подход гарантирует, что плавная прокрутка будет работать на всех типах устройств.
После инициализации и добавления data-scroll элементов,
прокрутка должна быть плавной, а элементы с разной скоростью движения
будут создавать эффект параллакса. Если элементы не реагируют на скролл,
необходимо проверить:
data-scroll-container на корневом
элементе;LocomotiveScroll.data-scroll-speed > 2, чтобы не нагружать рендер;update() только при необходимости, например
после изменения контента или ресайза.