Locomotive Scroll предоставляет мощный API для управления поведением прокрутки, включая возможность полностью или частично отключать анимацию. В ряде случаев требуется временно или постоянно отменить эффекты скролла, например при адаптации под мобильные устройства, интеграции с другими библиотеками или для оптимизации производительности.
stop()Для полного отключения анимации скролла используется метод
stop(). Он останавливает обработку всех внутренних анимаций
и событий, связанных с текущим экземпляром Locomotive Scroll:
const scroll = new LocomotiveScroll({
el: document.querySelector('#scroll-container'),
smooth: true,
});
scroll.stop();
После вызова stop() все эффекты «плавного скролла»
прекращаются, но элементы DOM остаются на текущих позициях. Важно
понимать, что это временная мера, и скролл можно
возобновить методом start().
scroll.start();
destroy()Если требуется полностью удалить все следы Locomotive Scroll с
страницы — освободить слушатели событий и вернуть стандартный нативный
скролл — используется метод destroy().
scroll.destroy();
Эта операция:
scroll и resize.transform
и translate3d) для элементов.Метод destroy() полезен при динамическом изменении
контента или при переходе между страницами SPA.
Locomotive Scroll позволяет управлять отдельными анимациями с помощью
атрибутов data-scroll и data-scroll-speed. Для
временного отключения эффекта можно удалить атрибуты или условно
отменять их обработку в JS:
document.querySelectorAll('[data-scroll]').forEach(el => {
el.removeAttribute('data-scroll');
});
Это отключает эффекты для конкретных элементов, не трогая глобальные настройки скролла.
При отключении анимации важно корректно обработать связанные события.
Locomotive Scroll генерирует события scroll,
call, resize. Если скролл отключен через
stop() или destroy(), следует удалить подписку
на эти события, иначе возможны ошибки или лишние вызовы функций:
scroll.off('scroll');
scroll.off('call');
scroll.off('resize');
smooth для условного отключенияПри инициализации можно задать параметр smooth: false
для полной деактивации плавной прокрутки:
const scroll = new LocomotiveScroll({
el: document.querySelector('#scroll-container'),
smooth: window.innerWidth > 1024, // отключение на мобильных
});
Такой подход позволяет управлять анимацией без последующих вызовов
stop() и destroy(), что удобно при адаптивной
верстке.
При отключении анимации может потребоваться корректировка позиции
страницы, чтобы пользователь не увидел резких скачков. Для этого
используется метод scrollTo() без анимации:
scroll.scrollTo(0, { offset: 0, duration: 0, disableLerp: true });
offset задаёт смещение от целевого элемента.duration: 0 мгновенно перемещает страницу.disableLerp: true отключает плавное интерполирование
позиции.При интеграции Locomotive Scroll с анимационными библиотеками типа GSAP или Barba.js отключение скролла требует синхронизации:
stop() перед анимацией страницы предотвращает
конфликт трансформаций.start() или
update() для восстановления корректного поведения.scroll.stop();
// Запуск анимации GSAP
gsap.to('.box', { x: 100, duration: 1 });
scroll.start();
Ключевые методы для контроля анимации скролла:
| Метод | Действие |
|---|---|
stop() |
Временно приостанавливает обработку анимаций и событий скролла |
start() |
Возобновляет работу после stop() |
destroy() |
Полностью удаляет экземпляр, возвращает нативный скролл |
scrollTo() |
Позволяет корректировать позицию после остановки скролла |
off(event) |
Отключает обработчики событий при деактивации |
Комбинируя эти методы, можно гибко управлять анимацией и полностью контролировать поведение Locomotive Scroll в любых условиях.