Для начала работы с Locomotive Scroll необходимо подключить библиотеку к проекту. Существует два основных способа:
Через npm:
npm install locomotive-scroll
После установки в проект можно импортировать библиотеку:
import LocomotiveScroll from 'locomotive-scroll';
import 'locomotive-scroll/dist/locomotive-scroll.css';
Через CDN:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/locomotive-scroll@4.2.1/dist/locomotive-scroll.min.css">
<script src="https://cdn.jsdelivr.net/npm/locomotive-scroll@4.2.1/dist/locomotive-scroll.min.js"></script>
Использование CDN удобно для быстрого прототипирования или небольших проектов без сборщика модулей.
Создание экземпляра Locomotive Scroll выполняется с
помощью конструктора new LocomotiveScroll(options).
Основной объект принимает один обязательный параметр — объект
конфигурации options.
const scroll = new LocomotiveScroll({
el: document.querySelector('[data-scroll-container]'),
smooth: true,
});
data-scroll-container.'vertical' по умолчанию или
'horizontal').Пример с настройкой скорости и горизонтального скролла:
const scroll = new LocomotiveScroll({
el: document.querySelector('[data-scroll-container]'),
smooth: true,
direction: 'horizontal',
lerp: 0.1
});
Для использования эффектов, анимаций и управления элементами внутри контейнера скролла, Locomotive Scroll опирается на data-атрибуты:
'top', 'bottom', 'center'.Пример использования:
<div data-scroll data-scroll-speed="2">
Элемент движется быстрее основного скролла
</div>
Locomotive Scroll предоставляет множество методов для управления поведением скролла:
update() — пересчитывает позиции элементов.
Используется после динамического изменения DOM.scrollTo(target, options) — прокручивает контейнер к
указанной цели. target может быть числом, селектором или
элементом. options включают скорость, задержку и
направление.scroll.scrollTo('#section2', { offset: 0, duration: 1500, easing: [0.25, 0.0, 0.35, 1.0] });
start() и stop() — управление скроллом,
можно временно приостанавливать или запускать его.destroy() — удаляет экземпляр и возвращает DOM в
исходное состояние.Locomotive Scroll поддерживает прослушивание событий:
data-scroll-call.Пример прослушивания событий:
scroll.on('scroll', (obj) => {
console.log('Текущая позиция скролла:', obj.scroll.y);
});
scroll.on('call', (value, way, obj) => {
console.log('Вызван элемент с call:', value, 'Направление:', way);
});
Если на странице происходит динамическое добавление контента
(например, через AJAX или SPA-роутинг), необходимо вызывать метод
update():
scroll.update();
Это гарантирует корректное отслеживание всех элементов и правильное позиционирование анимаций.
const scroll = new LocomotiveScroll({
el: document.querySelector('[data-scroll-container]'),
smooth: window.innerWidth > 768,
});
overflow: hidden и
-webkit-overflow-scrolling. Locomotive Scroll автоматически
применяет оптимизации для плавного скролла.import LocomotiveScroll from 'locomotive-scroll';
import 'locomotive-scroll/dist/locomotive-scroll.css';
const scroll = new LocomotiveScroll({
el: document.querySelector('[data-scroll-container]'),
smooth: true,
direction: 'vertical',
lerp: 0.1,
smartphone: {
smooth: false
},
tablet: {
smooth: true
}
});
scroll.on('scroll', (obj) => {
console.log('Позиция Y:', obj.scroll.y);
});
В этом примере создается экземпляр, учитывающий разные устройства, с плавной прокруткой и возможностью отслеживать текущее положение скролла.