Библиотека AOS (Animate on Scroll) позволяет создавать плавные анимации элементов при прокрутке страницы, не требуя сложного ручного управления событиями скролла. Она основана на принципе прогрессивного улучшения, что означает, что базовое содержимое страницы остаётся доступным даже при отсутствии поддержки JavaScript, а анимации добавляют визуальную привлекательность и интерактивность без ущерба для функциональности.
AOS использует атрибуты данных (data-*)
для конфигурации анимации каждого элемента. Основная структура выглядит
следующим образом:
<div data-aos="fade-up" data-aos-duration="1000" data-aos-delay="200">
Контент для анимации
</div>
data-aos — тип анимации (например,
fade-up, fade-down,
flip-left).data-aos-duration — длительность анимации в
миллисекундах.data-aos-delay — задержка перед запуском анимации.Эти атрибуты позволяют тонко настроить поведение каждой анимации, создавая динамичные и отзывчивые интерфейсы.
Для работы AOS необходимо подключить CSS и JS библиотеки. Это можно сделать через CDN:
<link href="https://cdn.jsdelivr.net/npm/aos@2.3.4/dist/aos.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/aos@2.3.4/dist/aos.js"></script>
Инициализация выполняется простым вызовом:
AOS.init({
offset: 120, // Смещение для срабатывания анимации
delay: 0, // Задержка по умолчанию
duration: 400, // Длительность анимации по умолчанию
easing: 'ease', // Функция плавности
once: false, // Анимация повторяется при повторном скролле
mirror: false, // Анимация срабатывает при скролле вверх
});
Параметры offset, delay,
duration, easing, once и
mirror позволяют глобально контролировать анимации, что
облегчает поддержку больших проектов.
AOS предоставляет следующие основные группы анимаций:
fade-up, fade-down, fade-left,
fade-right).flip-left,
flip-right, flip-up,
flip-down).slide-up, slide-down,
slide-left, slide-right).zoom-in, zoom-out, zoom-in-up,
zoom-in-down).Каждый тип анимации может быть дополнительно настроен через атрибуты
data-aos-duration, data-aos-delay и
data-aos-anchor-placement.
Помимо атрибутов данных, элементы можно анимировать программно. Например, перезапуск анимации:
AOS.refresh(); // Пересчитывает позиции элементов при изменении DOM
или обновление после динамического добавления новых элементов:
const newElement = document.createElement('div');
newElement.setAttribute('data-aos', 'fade-right');
document.body.appendChild(newElement);
AOS.refresh();
Одним из ключевых аспектов AOS является прогрессивное улучшение:
Это достигается за счёт минимального вмешательства в DOM и использования атрибутов данных, которые не мешают семантике HTML.
<div data-aos="fade-up" data-aos-anchor-placement="top-bottom">
Контент
</div>
<div data-aos="fade-up" data-aos-once="true">
Один раз
</div>
<div data-aos="fade-up">
Каждый раз при прокрутке
</div>
AOS.init({
disable: 'mobile'
});
AOS.init({
easing: 'ease-in-out-cubic'
});
AOS легко комбинируется с современными фреймворками, такими как
React, Vue или
Angular, поскольку инициализация происходит после
рендера DOM. Для динамических приложений важно вызывать
AOS.refresh() после добавления новых компонентов, чтобы
анимации корректно срабатывали.
AOS обеспечивает простой, но гибкий механизм анимации, который соблюдает принципы прогрессивного улучшения, делая интерфейсы живыми, отзывчивыми и при этом доступными для всех пользователей.