Для начала работы с библиотекой 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({
duration: 800, // длительность анимации в миллисекундах
easing: 'ease-in-out', // тип ускорения
once: true, // анимация срабатывает только один раз
});
Параметры duration, easing и
once позволяют тонко настроить поведение анимации и делают
её более плавной и естественной.
Для применения анимации к элементу используется атрибут
data-aos. Примеры базовых значений:
<div data-aos="fade-up">Карточка 1</div>
<div data-aos="fade-right">Карточка 2</div>
<div data-aos="zoom-in">Карточка 3</div>
Ключевые атрибуты:
data-aos – тип анимации (fade-up,
fade-down, fade-left, fade-right,
zoom-in, flip-left и другие).data-aos-delay – задержка начала анимации в
миллисекундах.data-aos-duration – длительность анимации индивидуально
для элемента.data-aos-offset – расстояние от верхней границы окна
браузера до момента срабатывания анимации.data-aos-easing – тип ускорения для конкретного
элемента.Эти атрибуты позволяют гибко управлять последовательностью и внешним видом анимации отдельных карточек.
Для создания последовательной анимации карточек важно использовать
data-aos-delay. Этот атрибут задаёт задержку начала
анимации каждого элемента относительно момента его появления в зоне
видимости.
Пример последовательного появления карточек с интервалом 200 мс:
<div class="card" data-aos="fade-up" data-aos-delay="0">Карточка 1</div>
<div class="card" data-aos="fade-up" data-aos-delay="200">Карточка 2</div>
<div class="card" data-aos="fade-up" data-aos-delay="400">Карточка 3</div>
<div class="card" data-aos="fade-up" data-aos-delay="600">Карточка 4</div>
Важно, чтобы каждая карточка имела одинаковый тип анимации для
плавного эффекта “лесенки”, а data-aos-delay увеличивался
на постоянный интервал.
Для визуального контроля и дополнительных эффектов рекомендуется использовать CSS. Например, можно задать одинаковую высоту и отступы между карточками, чтобы анимация выглядела гармонично:
.card {
background-color: #fff;
padding: 20px;
margin-bottom: 20px;
border-radius: 8px;
box-shadow: 0 4px 12px rgba(0,0,0,0.1);
}
AOS работает с любыми HTML-элементами, поэтому комбинация с CSS Grid или Flexbox позволяет создавать сложные сетки карточек с упорядоченной анимацией.
Если количество карточек заранее неизвестно или генерируется
динамически, удобно вычислять data-aos-delay
программно:
const cards = document.querySelectorAll('.card');
cards.forEach((card, index) => {
card.setAttribute('data-aos', 'fade-up');
card.setAttribute('data-aos-delay', index * 200);
});
AOS.refresh(); // обновление библиотеки после динамических изменений
Метод AOS.refresh() необходим для пересчёта позиции
элементов и корректного срабатывания анимаций после добавления элементов
в DOM.
Комбинирование разных типов анимаций Можно использовать чередующиеся эффекты, например:
<div data-aos="fade-right" data-aos-delay="0">Карточка 1</div>
<div data-aos="fade-left" data-aos-delay="200">Карточка 2</div>
<div data-aos="fade-right" data-aos-delay="400">Карточка 3</div>Контроль направления и скорости через CSS переменные
.card {
--aos-duration: 800ms;
--aos-easing: ease-in-out;
}Использование data-aos-offset для активации
анимации до появления элемента полностью
<div data-aos="fade-up" data-aos-offset="100">Карточка</div>Анимация при повторном скролле Если нужно, чтобы карточки анимировались каждый раз при прокрутке:
AOS.init({
once: false
});<div class="cards-container">
<div class="card" data-aos="zoom-in" data-aos-delay="0">Карточка 1</div>
<div class="card" data-aos="zoom-in" data-aos-delay="150">Карточка 2</div>
<div class="card" data-aos="zoom-in" data-aos-delay="300">Карточка 3</div>
<div class="card" data-aos="zoom-in" data-aos-delay="450">Карточка 4</div>
</div>
.cards-container {
display: flex;
flex-wrap: wrap;
gap: 20px;
}
.card {
flex: 1 1 calc(25% - 20px);
padding: 20px;
background: #f7f7f7;
border-radius: 10px;
text-align: center;
}
Такой подход создаёт эффект «каскада» при скролле, где карточки плавно появляются одна за другой, усиливая визуальное восприятие и удерживая внимание на контенте.
once: true для предотвращения постоянного
срабатывания анимаций при прокрутке.data-aos-offset.Эти техники позволяют создать сложные, привлекательные последовательные анимации карточек без снижения производительности страницы.