В библиотеке Locomotive Scroll атрибут
data-scroll-position используется для точного управления
положением элемента относительно прокрутки страницы. Он позволяет
отслеживать, в каком положении находится элемент на экране, и применять
к нему различные эффекты анимации или триггеры событий.
Атрибут data-scroll-position задаётся на HTML-элементе и
принимает несколько типов значений:
Пример базовой разметки:
<div class="section" data-scroll data-scroll-position="center">
Контент блока
</div>
В этом примере Locomotive Scroll будет отслеживать момент, когда центр блока совпадает с центром окна, и применять к нему анимации или вычислять прогресс прокрутки.
data-scroll-position помогает определить момент появления
элемента в зоне видимости. Для эффекта появления можно использовать
связку с CSS-классами через data-scroll-class:<div class="fade-in"
data-scroll
data-scroll-position="top"
data-scroll-class="is-visible">
Блок с анимацией
</div>
Когда верхняя граница блока достигнет верхней границы окна, класс
is-visible будет добавлен к элементу.
Совместимость с горизонтальной и вертикальной
прокруткой Атрибут корректно работает как для вертикальных, так
и для горизонтальных скролл-контейнеров. В случае горизонтальной
прокрутки значения top, center и
bottom интерпретируются относительно горизонтальной
оси.
Процентные значения Для более гибкого контроля можно указывать позиции в процентах от высоты окна:
<div data-scroll data-scroll-position="75%">
Контент блока
</div>
В этом случае событие срабатывает, когда верхняя граница элемента достигает 75% от высоты окна.
data-scroll-repeatАтрибут data-scroll-position можно комбинировать с
data-scroll-repeat для многократного срабатывания анимаций
при повторной прокрутке:
<div data-scroll
data-scroll-position="center"
data-scroll-repeat
data-scroll-class="active">
Анимируемый блок
</div>
Каждый раз, когда центр блока совпадает с центром окна, класс
active добавляется и удаляется при выходе из зоны
видимости, что позволяет повторно активировать анимацию.
Для создания прогресс-эффектов, когда значение прокрутки элемента
зависит от положения относительно окна, используется сочетание
data-scroll-position и data-scroll-speed или
пользовательских обработчиков событий:
<div data-scroll
data-scroll-position="top"
data-scroll-speed="2">
Параллакс эффект
</div>
В данном примере блок сдвигается быстрее прокрутки, а событие срабатывает, когда его верхняя граница достигает верхней границы окна.
Для динамического реагирования на изменение позиции элемента можно
использовать событие scroll с объектом Locomotive
Scroll:
const scroll = new LocomotiveScroll({
el: document.querySelector('[data-scroll-container]'),
smooth: true
});
scroll.on('scroll', (args) => {
const el = document.querySelector('.section');
if (args.currentElements['.section']?.el) {
const progress = args.currentElements['.section'].progress;
el.style.opacity = progress;
}
});
Здесь args.currentElements содержит текущие элементы с
data-scroll, а свойство progress показывает
степень прокрутки относительно заданной позиции
(data-scroll-position).
top
или center.data-scroll-repeat следует
учитывать производительность, особенно на длинных страницах с большим
количеством анимируемых блоков.data-scroll.data-scroll-position.data-scroll-position с кастомными обработчиками и
библиотеками анимации типа GSAP, что позволяет плавно контролировать
свойства элементов в зависимости от прогресса скролла.Эффективное использование data-scroll-position позволяет
создавать точные и интерактивные скролл-анимации, управлять видимостью
блоков и плавно интегрировать параллакс-эффекты без необходимости
вручную вычислять положение элементов на странице.