В версии 3.x Locomotive Scroll использует традиционный подход с созданием экземпляра через конструктор:
const scroll = new LocomotiveScroll({
el: document.querySelector('[data-scroll-container]'),
smooth: true
});
Версия 4.x изменила структуру экспорта и теперь библиотека поставляется в модульном формате с поддержкой ES Modules. Импорт осуществляется напрямую:
import LocomotiveScroll from 'locomotive-scroll';
const scroll = new LocomotiveScroll({
el: document.querySelector('[data-scroll-container]'),
smooth: true,
smartphone: { smooth: true },
tablet: { smooth: true }
});
Ключевые моменты:
smartphone,
tablet) стала нативной, в 3.x приходилось использовать
сторонние методы или кастомные медиа-запросы.В версии 3.x методы управления прокруткой были ограничены:
scroll.scrollTo('#section');
scroll.update();
В версии 4.x появилась расширенная API:
scroll.scrollTo(target, options) теперь поддерживает
кастомные easing-функции, offset и duration.scroll.start() и scroll.stop()
позволяют полностью включать или останавливать управление
прокруткой.call,
scroll, scrollStart, scrollStop,
что облегчает синхронизацию анимаций с прокруткой.Пример с кастомным easing:
scroll.scrollTo('#section', {
offset: -100,
duration: 1500,
easing: [0.25, 0.0, 0.35, 1.0]
});
Версия 4.x оптимизирует плавность скролла за счет использования
requestAnimationFrame и улучшенной виртуализации.
Отличия:
will-change: transform
применяется автоматически, уменьшает джиттер на старых устройствах.Модель работы с data-scroll и
data-scroll-speed в 4.x стала более гибкой:
<div data-scroll data-scroll-speed="2" data-scroll-mobile-speed="1.5">
Контент
</div>
Версия 4.x упрощает интеграцию с анимационными библиотеками, особенно с GSAP:
import { gsap } from "gsap";
scroll.on("scroll", (instance) => {
gsap.to(".box", {
y: instance.scroll.y * 0.3,
ease: "power3.out"
});
});
Преимущества:
scroll.instance.scroll.y.В версии 4.x введены встроенные настройки для адаптивного скролла:
const scroll = new LocomotiveScroll({
el: document.querySelector('[data-scroll-container]'),
smooth: true,
smartphone: { smooth: false },
tablet: { smooth: true }
});
window.innerWidth.Версия 4.x улучшила методы destroy и init:
scroll.destroy();
scroll.init();
destroy() очищает все слушатели событий и
возвращает DOM к исходному состоянию.| Функция / Свойство | 3.x | 4.x |
|---|---|---|
| Импорт | Через <script> или CommonJS |
ES Modules |
| Плавный скролл | Основной CSS transform | requestAnimationFrame + GPU оптимизация |
| Адаптивность | Кастомные методы | Встроенные smartphone и tablet |
| Callbacks | Ограниченные | Расширенные с жизненным циклом |
| Параллакс элементы | Только data-scroll-speed |
data-scroll-speed,
data-scroll-mobile-speed, call-бэки |
| Управление скроллом | Ограниченное | scrollTo, start, stop,
кастомные easing |
| Интеграция с GSAP | Требует синхронизации вручную | Прямая через события scroll |
| Destroy / init | Частично | Полностью безопасное восстановление DOM |
Версия 4.x Locomotive Scroll ориентирована на современный фронтенд, улучшает производительность, расширяет API и упрощает адаптивность, что делает её предпочтительной для новых проектов по сравнению с 3.x.