Библиотека AOS (Animate on Scroll) предоставляет удобный инструмент для анимации элементов при прокрутке страницы. Одним из ключевых аспектов профессионального использования AOS является синхронизация анимаций, позволяющая создавать последовательные, плавные и визуально согласованные эффекты на странице.
data-aos-delay и
data-aos-durationДля точной синхронизации анимаций применяются два основных атрибута:
data-aos-delay — задаёт задержку перед
началом анимации в миллисекундах.data-aos-duration — определяет
длительность самой анимации в миллисекундах.Пример последовательной анимации нескольких элементов:
<div data-aos="fade-up" data-aos-delay="0" data-aos-duration="800">Элемент 1</div>
<div data-aos="fade-up" data-aos-delay="200" data-aos-duration="800">Элемент 2</div>
<div data-aos="fade-up" data-aos-delay="400" data-aos-duration="800">Элемент 3</div>
В данном примере элементы будут появляться один за другим с задержкой 200 мс между стартами анимаций, создавая эффект каскада.
При работе с разными эффектами (fade-up,
zoom-in, slide-right) важно учитывать, что
разные анимации могут визуально вступать в конфликт,
если их запуск происходит одновременно. Для предотвращения таких
конфликтов используется координированное распределение
задержек:
<div data-aos="fade-up" data-aos-delay="0" data-aos-duration="600">Fade Up</div>
<div data-aos="zoom-in" data-aos-delay="300" data-aos-duration="600">Zoom In</div>
<div data-aos="slide-right" data-aos-delay="600" data-aos-duration="600">Slide Right</div>
Такая последовательность обеспечивает плавный визуальный переход между разными эффектами, сохраняя внимание пользователя.
AOS поддерживает запуск анимаций через программные методы и события
JavaScript. Метод AOS.refresh() обновляет
позиции элементов на странице после динамических изменений, что критично
при работе с контентом, загружаемым асинхронно.
Пример синхронизации с событием прокрутки:
window.addEventListener('scroll', () => {
if (window.scrollY > 500) {
document.querySelectorAll('.animated').forEach(el => {
el.setAttribute('data-aos-delay', '0');
el.setAttribute('data-aos-duration', '1000');
});
AOS.refresh();
}
});
В этом случае анимации активируются только после достижения определённой позиции страницы, обеспечивая точное взаимодействие с пользователем.
data-aos-anchor для согласованного запускаАтрибут data-aos-anchor позволяет
привязать анимацию к другому элементу на странице, а не к самому
элементу с анимацией. Это особенно полезно для синхронизации блоков,
которые появляются одновременно в разных секциях:
<div id="section1">
<div data-aos="fade-left" data-aos-anchor="#section1">Элемент A</div>
<div data-aos="fade-right" data-aos-anchor="#section1">Элемент B</div>
</div>
Оба элемента будут активироваться при появлении
#section1 в области видимости, что упрощает управление
сложными сценами анимаций.
data-aos-delay.data-aos-anchor.data-aos-delay и
data-aos-duration в зависимости от пользовательских
действий или состояния страницы.Для упрощения синхронизации анимаций удобно использовать глобальные настройки при инициализации:
AOS.init({
offset: 120, // Смещение начала анимации относительно верха экрана
duration: 800, // Длительность по умолчанию
easing: 'ease-in-out',
once: true // Анимация срабатывает один раз
});
Глобальная конфигурация позволяет задать единую базовую
длительность и смещение, а локальные атрибуты
data-aos-delay и data-aos-duration
корректируют отдельные элементы, создавая согласованную систему анимаций
по всей странице.
AOS.refresh(), чтобы обновить позиции и синхронизацию
анимаций.Эти методы позволяют управлять анимациями в AOS не хаотично, а в виде согласованной системы, обеспечивая профессиональный и аккуратный визуальный эффект.