Для работы с эффектами параллакса через
data-scroll-speed необходимо сначала подключить библиотеку
Locomotive Scroll и инициализировать её на странице. Основная структура
инициализации выглядит следующим образом:
import LocomotiveScroll from 'locomotive-scroll';
import 'locomotive-scroll/dist/locomotive-scroll.css';
const scroll = new LocomotiveScroll({
el: document.querySelector('#scroll-container'),
smooth: true,
multiplier: 1,
class: 'is-reveal',
});
<div> с уникальным ID или
классом.data-scroll-speedАтрибут data-scroll-speed задаёт относительную скорость
движения элемента при скроллинге относительно обычного потока
страницы.
1 соответствует скорости контейнера.1 ускоряет движение элемента.1, включая отрицательные числа,
замедляет движение или меняет направление.Пример разметки HTML:
<div id="scroll-container">
<section>
<h1 data-scroll data-scroll-speed="2">Ускоренный заголовок</h1>
<p data-scroll data-scroll-speed="0.5">Замедленный текст параллакса</p>
<img data-scroll data-scroll-speed="-1" src="image.jpg" alt="Обратный параллакс">
</section>
</div>
data-scroll-speed="2" будет двигаться в два
раза быстрее, чем остальная страница.data-scroll-speed="0.5" будет двигаться
медленнее.Locomotive Scroll использует селекторы data-scroll для
отслеживания элементов. Можно комбинировать
data-scroll-speed с другими атрибутами:
data-scroll-direction="vertical|horizontal" – задаёт
направление движения элемента.data-scroll-offset="значение" – смещает точку активации
элемента при появлении в зоне видимости.data-scroll-repeat – позволяет повторно анимировать
элемент при повторном появлении.Пример:
<div class="parallax-wrapper" data-scroll data-scroll-speed="1.5" data-scroll-direction="vertical">
<img src="mountains.png" alt="Горы">
</div>
Такой элемент будет смещаться вертикально с увеличенной скоростью относительно основного скролла.
Для динамического изменения data-scroll-speed
используется метод update() объекта Locomotive Scroll.
Например, чтобы изменить скорость элемента при определённом событии:
const parallaxElement = document.querySelector('.parallax-wrapper');
parallaxElement.setAttribute('data-scroll-speed', '3');
scroll.update();
Метод update() пересчитывает позиции всех элементов и
пересобирает внутренние координаты, что особенно важно при динамическом
добавлении новых элементов или изменении их атрибутов.
Эффект параллакса часто используется в многослойных композициях, где
элементы переднего плана движутся быстрее, а задний план медленнее. Для
этого создаётся несколько элементов с разными значениями
data-scroll-speed:
<div class="parallax-scene" data-scroll-container>
<div class="background" data-scroll data-scroll-speed="0.3"></div>
<div class="midground" data-scroll data-scroll-speed="1"></div>
<div class="foreground" data-scroll data-scroll-speed="2"></div>
</div>
will-change: transform; к элементам
с data-scroll-speed, чтобы браузер оптимизировал анимацию
GPU.scroll.update(), чтобы пересчитать позиции.data-scroll-speed для создания сложных визуальных эффектов
без дополнительного JavaScript.Эффекты параллакса хорошо интегрируются с CSS-анимациями и
библиотеками анимации, например, GSAP. Для синхронизации с Locomotive
Scroll можно использовать событие scroll:
scroll.on('scroll', (obj) => {
gsap.to('.foreground', {
y: obj.scroll.y * 0.5,
ease: 'power1.out',
});
});
Такой подход позволяет добавлять дополнительную анимацию элементов при скролле, оставаясь в рамках параллакс-логики.
data-scroll-speed определяет относительную скорость
движения элементов.data-scroll-direction,
data-scroll-offset и data-scroll-repeat
позволяют создавать сложные визуальные эффекты.scroll.update().Такой подход обеспечивает гибкое и производительное создание параллакс-эффектов на странице с помощью Locomotive Scroll.