Locomotive Scroll — это современная библиотека для создания плавного скроллинга с поддержкой параллакса и динамических анимаций. В интернет-магазинах она позволяет улучшить пользовательский опыт за счет визуальной привлекательности и более интерактивного взаимодействия с контентом, не жертвуя производительностью.
Для начала работы необходимо подключить библиотеку и создать экземпляр скроллера:
import LocomotiveScroll from 'locomotive-scroll';
const scroll = new LocomotiveScroll({
el: document.querySelector('#js-scroll'),
smooth: true,
multiplier: 1.2,
getDirection: true,
getSpeed: true
});
Параметры конфигурации:
el — контейнер, внутри которого будет работать
скроллинг.smooth — включает плавность прокрутки.multiplier — ускорение скролла, полезно для длинных
каталожных страниц.getDirection — определяет направление скролла
(up или down).getSpeed — позволяет отслеживать скорость прокрутки для
динамических анимаций.В интернет-магазине важно, чтобы длинные списки товаров и баннерные секции загружались плавно, а пользователи ощущали естественное движение страницы.
Locomotive Scroll поддерживает data-атрибуты для параллакса, что делает его идеальным для создания эффектных баннеров и карточек товаров:
<div class="product-card" data-scroll data-scroll-speed="2">
<img src="product.jpg" alt="Товар">
<h2>Название товара</h2>
</div>
data-scroll активирует элемент для скроллинга.data-scroll-speed определяет скорость движения
относительно основного скролла. Значения >1 ускоряют движение,
значения <1 замедляют его.Эффект особенно полезен при прокрутке каталога, где изображения и тексты товаров движутся с разной скоростью, создавая впечатление глубины.
Locomotive Scroll предоставляет события для тонкой настройки поведения страницы:
scroll.on('scroll', (instance) => {
console.log('Скорость:', instance.speed);
console.log('Направление:', instance.direction);
});
Применение в интернет-магазине:
Для интернет-магазина важно оптимизировать загрузку товаров. Locomotive Scroll можно совместить с ленивой загрузкой:
const images = document.querySelectorAll('img[data-src]');
scroll.on('scroll', () => {
images.forEach(img => {
if (img.getBoundingClientRect().top < window.innerHeight) {
img.src = img.dataset.src;
img.removeAttribute('data-src');
}
});
});
Это позволяет уменьшить нагрузку на страницу и ускорить отображение критических элементов.
Использование data-scroll и классов для плавного
появления улучшает визуальное восприятие товаров:
[data-scroll] {
opacity: 0;
transform: translateY(20px);
transition: opacity 0.6s ease-out, transform 0.6s ease-out;
}
[data-scroll].is-inview {
opacity: 1;
transform: translateY(0);
}
scroll.on('call', (value, way, obj) => {
if (way === 'enter') {
obj.el.classList.add('is-inview');
} else {
obj.el.classList.remove('is-inview');
}
});
is-inview добавляется элементу, когда он попадает в
область видимости.Locomotive Scroll корректно работает с якорными ссылками, что важно для фильтров и категорий:
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function(e) {
e.preventDefault();
const target = document.querySelector(this.getAttribute('href'));
scroll.scrollTo(target);
});
});
Locomotive Scroll позволяет включать плавный скролл на мобильных устройствах с оптимизацией производительности:
const scroll = new LocomotiveScroll({
el: document.querySelector('#js-scroll'),
smooth: true,
smartphone: {
smooth: true
},
tablet: {
smooth: true
}
});
smartphone и tablet разделы позволяют
настроить отдельные параметры для мобильной версии.data-scroll-repeat только там, где
необходимо повторное срабатывание анимации.Locomotive Scroll легко интегрируется с современными фреймворками:
React:
import { useEffect, useRef } from 'react';
import LocomotiveScroll from 'locomotive-scroll';
export default function ShopScroll() {
const scrollRef = useRef(null);
useEffect(() => {
const scroll = new LocomotiveScroll({
el: scrollRef.current,
smooth: true
});
return () => scroll.destroy();
}, []);
return <div id="js-scroll" ref={scrollRef}>Контент интернет-магазина</div>;
}
ref.destroy() для предотвращения утечек памяти.Locomotive Scroll позволяет создавать интернет-магазины с динамическими, визуально эффектными страницами, повышая вовлечённость пользователей и улучшая UX без потери производительности. Правильная конфигурация, использование параллакса, событий скролла и анимаций делают страницы каталога и карточек товаров более живыми и современными.