Атрибут data-scroll-repeat в Locomotive
Scroll позволяет анимациям или эффектам повторно срабатывать
при каждом входе элемента в область видимости. По умолчанию Locomotive
Scroll активирует анимацию один раз при скролле, однако использование
data-scroll-repeat даёт возможность возвращать элемент к
исходному состоянию и запускать анимацию снова, если пользователь
прокручивает страницу обратно.
Ключевые моменты работы:
<div data-scroll data-scroll-repeat>
Этот блок будет анимироваться каждый раз при скролле в видимую область.
</div>
data-scroll-classАтрибут data-scroll-class часто применяется совместно с
data-scroll-repeat для добавления CSS-классов при появлении
элемента.
<div data-scroll data-scroll-class="is-visible" data-scroll-repeat>
Этот блок будет получать класс "is-visible" каждый раз при входе в область видимости.
</div>
В этом случае:
<style>
.fade-in {
opacity: 0;
transform: translateY(20px);
transition: opacity 0.6s ease, transform 0.6s ease;
}
.fade-in.is-visible {
opacity: 1;
transform: translateY(0);
}
</style>
<div data-scroll data-scroll-class="is-visible" data-scroll-repeat class="fade-in">
Повторяющаяся анимация появления
</div>
При прокрутке:
is-visible.is-visible больше нет, элемент
возвращается в исходное состояние.data-scroll-speed: Если элемент с
data-scroll-repeat имеет изменённую скорость скролла,
повторные эффекты учитывают эту скорость.data-scroll-delay: Можно задать
задержку перед повторной активацией анимации.data-scroll-target: Позволяет
ограничивать эффект только определённой областью внутри контейнера.<div data-scroll data-scroll-repeat data-scroll-speed="2">
Элемент с ускоренным скроллом и повторяющейся анимацией
</div>
data-scroll-repeat, это может повлиять на FPS,
так как элементы постоянно проверяются при скролле.update().scroll.update(); // Обновление после динамического добавления элементов
Можно программно отслеживать событие появления элемента с
data-scroll-repeat через слушатель call:
<div data-scroll data-scroll-repeat data-scroll-call="repeatEvent">
Пример с вызовом JS
</div>
<script>
const scroll = new LocomotiveScroll({
el: document.querySelector('[data-scroll-container]'),
smooth: true
});
scroll.on('call', (func, way, obj) => {
if(func === 'repeatEvent' && way === 'enter') {
console.log('Элемент вошел в область видимости');
}
});
</script>
way может быть "enter"
или "leave".data-scroll-repeat с
кастомными JS-анимациями или событиями.data-scroll-repeat для повторяющихся
интерактивных эффектов, таких как: fade, slide, масштабирование.transform и
opacity.data-scroll-repeat является мощным инструментом для
создания динамичных, повторяющихся эффектов в Locomotive Scroll,
позволяя оживить страницу без сложного JavaScript.