Для работы с библиотекой AOS необходимо подключить её CSS и JavaScript. Это можно сделать через CDN или локально, скачав файлы из официального репозитория. Пример подключения через 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():
AOS.init({
// Настройки по умолчанию
offset: 120, // Смещение относительно нижнего края окна
delay: 0, // Задержка перед началом анимации (мс)
duration: 400, // Продолжительность анимации (мс)
easing: 'ease', // Функция ускорения
once: false, // Анимация срабатывает один раз или при каждом скролле
mirror: false, // Анимация воспроизводится при скролле вверх
});
Для применения анимации к элементу используется атрибут
data-aos. Он задаёт тип анимации, которая будет применена
при появлении элемента в области видимости. Примеры популярных
значений:
fade – плавное появление/исчезновениеfade-up – появление с движением вверхfade-down – появление с движением внизfade-left / fade-right – появление с
боковым сдвигомzoom-in / zoom-out – увеличение или
уменьшение размера элементаflip-left / flip-right – переворот
элемента по оси X или YДополнительные атрибуты позволяют тонко настраивать поведение анимаций:
data-aos-offset – смещение от нижнего края окна в
пикселяхdata-aos-delay – задержка начала анимации (мс)data-aos-duration – продолжительность анимации
(мс)data-aos-easing – функция ускорения
(linear, ease-in, ease-out,
ease-in-out)data-aos-once – если true, анимация
срабатывает один разdata-aos-mirror – если true, анимация
повторяется при прокрутке вверхПример использования:
<div data-aos="fade-up" data-aos-duration="800" data-aos-delay="200">
Контент с анимацией
</div>
AOS позволяет управлять анимацией через JavaScript, что удобно для динамически создаваемых элементов:
AOS.init({
offset: 150,
duration: 600,
easing: 'ease-in-out',
once: true,
mirror: true
});
// Обновление AOS после добавления новых элементов
AOS.refresh();
Метод AOS.refresh() пересчитывает позиции элементов и
применяет к ним анимацию. Это важно, если контент добавляется
динамически, например через AJAX или при рендере компонентов на
фронтенде.
Для повторного использования одних и тех же эффектов удобно создавать CSS-классы и применять их вместе с AOS:
.animated-card {
border-radius: 12px;
box-shadow: 0 4px 15px rgba(0,0,0,0.1);
padding: 20px;
}
<div class="animated-card" data-aos="zoom-in" data-aos-duration="700">
Карточка с эффектом
</div>
Можно создавать библиотеку собственных комбинаций анимаций с разными задержками и длительностью для унификации интерфейса на проекте. Например, карточки товаров, блоки текстов и изображения могут иметь одинаковый базовый эффект с небольшими вариациями времени появления.
При использовании большого количества анимаций важно учитывать влияние на производительность:
once: true для элементов, которые не
требуют повторной анимации.AOS.refresh() только после добавления
значительного количества новых элементов.AOS корректно работает с элементами, добавляемыми через Jav * aScript:
const container = document.querySelector('#dynamic-container');
const newElement = document.createElement('div');
newElement.classList.add('animated-card');
newElement.setAttribute('data-aos', 'fade-right');
newElement.textContent = 'Новая карточка';
container.appendChild(newElement);
// Обновление AOS для новых элементов
AOS.refresh();
Такой подход позволяет создавать интерфейсы с интерактивными списками, галереями или лендингами с подгружаемыми блоками, сохраняя единый стиль анимаций.
AOS поддерживает все современные браузеры, включая мобильные устройства. Однако следует учитывать:
opacity, что обеспечивает высокую производительность.Для удобства можно определить глобальные настройки, чтобы не дублировать их на каждом элементе:
AOS.init({
offset: 100,
delay: 50,
duration: 500,
easing: 'ease-in-out',
once: false,
mirror: false
});
Эти параметры будут применяться ко всем элементам, у которых не задан
индивидуальный data-aos-*. Индивидуальные атрибуты имеют
приоритет над глобальными настройками.
При работе с React, Vue или Angular элементы могут рендериться динамически. В таких случаях инициализация и обновление AOS выполняется после монтирования компонента:
useEffect(() => {
AOS.init({ duration: 800 });
AOS.refresh();
}, []);
Это гарантирует корректное срабатывание анимаций даже при динамическом рендере элементов.
Эта структура позволяет создавать сложные, повторно используемые анимации на веб-страницах с гибкой настройкой через атрибуты и JavaScript, обеспечивая единый визуальный стиль и высокую производительность.