В библиотеке Locomotive Scroll атрибут
data-scroll-speed используется для управления скоростью
прокрутки отдельных элементов относительно стандартного скролла
страницы. Этот параметр позволяет создавать эффект
параллакса, при котором элементы двигаются с отличной
от базовой скоростью, создавая глубину и динамику интерфейса.
Для начала требуется инициализация Locomotive Scroll на контейнере
страницы. Обычно контейнер имеет класс
.scroll-container:
import LocomotiveScroll from 'locomotive-scroll';
const scroll = new LocomotiveScroll({
el: document.querySelector('.scroll-container'),
smooth: true
});
В HTML элементы, к которым применяются различные скорости, должны
содержать атрибут data-scroll-speed с числовым
значением:
<div class="scroll-container">
<section data-scroll-section>
<div data-scroll data-scroll-speed="2">Быстрый элемент</div>
<div data-scroll data-scroll-speed="-1">Медленный элемент</div>
<div data-scroll data-scroll-speed="0.5">Элемент с половинной скоростью</div>
</section>
</div>
2,
3) ускоряют движение элемента относительно прокрутки.-1,
-2) замедляют движение и могут создавать эффект обратного
смещения.0.5) замедляют
движение элемента, создавая более плавное и легкое смещение.Locomotive Scroll на основе data-scroll-speed вычисляет
смещение элемента относительно стандартного скролла.
Основная формула для смещения:
elementOffset = scrollPosition * speed
где:
scrollPosition — текущая позиция скролла
контейнера,speed — значение data-scroll-speed.Это означает, что элемент с data-scroll-speed="2" будет
смещаться вдвое быстрее, чем обычный скролл, а элемент с
data-scroll-speed="-1" — в противоположном направлении при
том же скролле.
Для оптимизации плавности и производительности Locomotive Scroll
использует transform: translate3d вместо изменения
top или margin. Это позволяет использовать
GPU-ускорение и минимизировать нагрузку на рендеринг.
Пример эффекта параллакса с разными скоростями:
[data-scroll-speed] {
will-change: transform;
}
Использование will-change: transform предупреждает
браузер о том, что элемент будет часто изменять трансформацию, что
улучшает производительность анимации.
data-scroll-directionАтрибут data-scroll-speed может комбинироваться с
data-scroll-direction для контроля направления
движения:
<div data-scroll data-scroll-speed="3" data-scroll-direction="horizontal">
Горизонтальное ускорение
</div>
vertical (по умолчанию) — движение по вертикали.horizontal — движение по горизонтали. Полезно для
слайдеров или горизонтальных секций.Если элементы создаются динамически через JavaScript, их необходимо обновлять после добавления в DOM:
scroll.update();
Это гарантирует, что Locomotive Scroll учтёт все новые элементы с
атрибутом data-scroll-speed и применит корректные
трансформации.
5 могут создавать резкие скачки и «дрожание»
элементов.0.3, 0.7) — создаёт более естественное
ощущение глубины.data-scroll-offset для
контроля начала эффекта параллакса.<section data-scroll-section>
<div data-scroll data-scroll-speed="1.5">Элемент 1</div>
<div data-scroll data-scroll-speed="-0.5">Элемент 2</div>
<div data-scroll data-scroll-speed="2.5" data-scroll-direction="horizontal">Элемент 3</div>
</section>
Часто data-scroll-speed используется совместно с
анимациями через GSAP или CSS-переходы для создания
комплексного визуального эффекта:
gsap.to('.animated-element', {
y: () => window.scrollY * 0.5,
ease: 'power1.out'
});
При этом Locomotive Scroll обеспечивает базовую прокрутку и параллакс, а GSAP управляет дополнительными эффектами, синхронизированными со скоростью скролла.
Использование data-scroll-speed позволяет
реализовать:
Правильное понимание механизма работы и комбинаций значений
data-scroll-speed позволяет создавать визуально богатые
страницы с контролируемым и отзывчивым параллаксом.