Locomotive Scroll — это библиотека для плавного скроллинга с поддержкой параллакса и анимаций. Для работы с ней сначала подключается пакет через npm или CDN:
import LocomotiveScroll from 'locomotive-scroll';
const scroll = new LocomotiveScroll({
el: document.querySelector('[data-scroll-container]'),
smooth: true,
multiplier: 1.0,
lerp: 0.1
});
При инициализации важно убедиться, что контейнер правильно задан в HTML, например:
<div data-scroll-container>
<section data-scroll-section>
...
</section>
</div>
Locomotive Scroll генерирует собственные события, позволяющие отслеживать текущую позицию скролла и запускать анимации:
scroll.on('scroll', (obj) => {
console.log(obj.scroll.y); // текущая вертикальная позиция
console.log(obj.currentElements); // элементы в области видимости
});
Это позволяет создавать динамические эффекты, включая параллакс и анимации при скролле.
Для корректной работы скролла после динамического изменения DOM
необходимо использовать методы update() и
resize():
scroll.update(); // пересчитывает размеры контейнера и элементов
scroll.scrollTo('#target', { offset: -50, duration: 800, easing: [0.25, 0.0, 0.35, 1.0] });
Отладка Locomotive Scroll требует использования стандартных инструментов разработчика в браузере:
scroll.scroll.instance.scroll.yscroll.scroll.instance.currentElementsscroll.on('scroll', callback)[data-scroll-container] и
секций [data-scroll-section].transform: translate3d(...) — Locomotive
Scroll использует трансформации для имитации плавного скролла.smooth и lerp на разных разрешениях.Locomotive Scroll реализует скролл через CSS
transform: translate3d, что позволяет GPU ускорение. При
отладке важно:
will-change: transform.Для сложных анимаций используется data-scroll и
data-scroll-speed:
<div data-scroll data-scroll-speed="2">
...
</div>
В JavaScript можно проследить прогресс появления элемента:
scroll.on('call', (func, way, obj) => {
console.log(func, way, obj);
});
enter или
leave).window.addEventListener('resize', () => scroll.update());
Это помогает избегать ошибок при динамическом изменении контента и при адаптивной верстке.
scroll.scroll.instance.scroll.y и
scroll.scroll.instance.delta.y, чтобы отслеживать резкие
скачки или лаги.requestAnimationFrame для отладки
анимаций:function logScroll() {
console.log(scroll.scroll.instance.scroll.y);
requestAnimationFrame(logScroll);
}
logScroll();
Это позволяет визуализировать плавность скролла и корректность работы
lerp.
overflow.update() после изменения DOM или размеров
элементов.scroll и call через
консоль для корректного отслеживания позиции и прогресса элементов.Эти инструменты позволяют детально исследовать работу Locomotive Scroll, выявлять узкие места и оптимизировать анимации и плавность скролла.