Locomotive Scroll требует специфической структуры DOM для корректной работы. Ошибки на этом этапе часто приводят к отсутствию плавного скролла или некорректной анимации элементов.
Ключевые моменты:
data-scroll-container должен быть
единственным и содержать все элементы, которые участвуют в
прокрутке.data-scroll, должны
находиться внутри контейнера.data-scroll-container без отдельной инициализации для
каждого вызовет конфликты.Пример правильной структуры:
<div data-scroll-container>
<section data-scroll data-scroll-speed="1">Секция 1</section>
<section data-scroll data-scroll-speed="2">Секция 2</section>
</div>
Locomotive Scroll требует, чтобы контейнер имел правильные CSS-свойства. Наиболее частые ошибки:
height: 100% или
overflow: hidden на родительском контейнере.position: fixed на контейнере или
элементах, которые должны анимироваться.transform свойств на контейнере, особенно если
используется другой скрипт параллакса.Правильные настройки CSS:
html, body {
height: 100%;
overflow: hidden;
}
[data-scroll-container] {
position: relative;
}
Ошибка заключается в том, что new LocomotiveScroll()
вызывается до того, как DOM полностью сформирован. В результате скрипт
не находит контейнер и элементы для скролла.
Правильный подход:
document.addEventListener("DOMContentLoaded", () => {
const scroll = new LocomotiveScroll({
el: document.querySelector('[data-scroll-container]'),
smooth: true
});
});
Если элементы добавляются в DOM после инициализации, Locomotive Scroll не будет их учитывать, что проявляется в зависании скролла или неправильной позиции элементов.
Решение: вызвать метод update() после
изменения DOM.
scroll.update();
Частая ошибка — одновременное использование нескольких скриптов,
управляющих прокруткой (например, GSAP ScrollTrigger с
scrollerProxy) без правильной интеграции. Это вызывает
дёргание и разрыв анимаций.
Совет: всегда проверять совместимость и использовать методы интеграции, предоставленные документацией.
smooth: true включается только для вертикального
скролла. Для горизонтального требуется дополнительная настройка.getDirection и getSpeed не работают без
активации smooth.el приводит к silent
failure — скролл не инициализируется, и ошибок в консоли может не
быть.mobile: { smooth: false }) без корректной проверки может
сломать анимации.overflow: hidden на body
приводит к невозможности взаимодействия с нативным скроллом.При навигации между страницами:
scroll.destroy()), что приводит к накоплению обработчиков
и падению производительности.Пример правильного управления экземпляром:
if (scroll) scroll.destroy();
scroll = new LocomotiveScroll({
el: document.querySelector('[data-scroll-container]'),
smooth: true
});
Locomotive Scroll не реагирует автоматически на изменение размеров окна, если оно было вызвано динамическими изменениями DOM. Это приводит к рассинхронизации скролла.
Решение:
window.addEventListener('resize', () => {
scroll.update();
});
Все ошибки при инициализации Locomotive Scroll сводятся к трём главным принципам:
Соблюдение этих правил минимизирует большинство проблем и обеспечивает стабильную работу библиотеки на любых проектах.