Для использования библиотеки 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, // смещение от точки старта анимации (px)
delay: 0, // задержка перед началом анимации (ms)
duration: 400, // длительность анимации (ms)
easing: 'ease', // функция плавности анимации
once: false, // выполнять анимацию только один раз
mirror: false, // анимация при скролле вверх
anchorPlacement: 'top-bottom', // точка активации анимации
});
Ключевые параметры позволяют гибко настраивать поведение анимаций и оптимизировать их под разные сценарии.
AOS использует HTML-атрибуты для управления анимацией каждого элемента. Основные из них:
data-aos – задаёт тип анимации, например:
fade-up, fade-down, flip-left,
zoom-in.data-aos-delay – задержка перед началом анимации (в
миллисекундах).data-aos-duration – длительность анимации (в
миллисекундах).data-aos-offset – смещение точки старта анимации от
верха окна браузера.data-aos-easing – функция плавности анимации
(linear, ease-in-out и др.).data-aos-once – если установлено в true,
анимация сработает один раз.data-aos-mirror – если true, элемент
анимируется при прокрутке вверх.Пример использования:
<div data-aos="fade-up" data-aos-delay="200" data-aos-duration="800">
Контент с анимацией
</div>
Библиотека предоставляет большое количество стандартных анимаций:
fade,
fade-up, fade-down, fade-left,
fade-right.slide-up, slide-down, slide-left,
slide-right.flip-left,
flip-right, flip-up,
flip-down.zoom-in, zoom-out, zoom-in-up,
zoom-in-down.fade-up-right, fade-down-left.Каждая анимация имеет собственный визуальный характер, что позволяет создавать динамичные интерфейсы без сторонних библиотек.
AOS поддерживает различные размеры экранов, но для сложных интерфейсов рекомендуется применять медиа-запросы и контролировать включение анимаций только на устройствах с достаточной мощностью.
if (window.innerWidth > 768) {
AOS.init({ once: true });
}
AOS.refresh().transform и opacity.cubic-bezier.Если элементы добавляются на страницу после инициализации, необходимо обновить библиотеку:
AOS.refresh();
Для динамических SPA-приложений можно использовать:
const observer = new MutationObserver(() => {
AOS.refresh();
});
observer.observe(document.body, { childList: true, subtree: true });
Это гарантирует, что все новые элементы корректно анимируются при прокрутке.
AOS генерирует классы aos-animate и управляет стилями
через inline-стили и transform. Можно расширять анимации с
помощью CSS:
[data-aos="fade-up"] {
transition-property: opacity, transform;
transition-timing-function: ease-in-out;
}
[data-aos="fade-up"].aos-animate {
opacity: 1;
transform: translateY(0);
}
Такой подход позволяет тонко настраивать визуальный эффект, сочетая возможности библиотеки с собственными стилями.
AOS предоставляет методы для ручного управления:
AOS.refresh() – обновление положения элементов и
повторная инициализация.AOS.refreshHard() – полная перезагрузка всех
элементов.AOS.init({...}) – повторная инициализация с новыми
параметрами.Это позволяет комбинировать анимации с динамическим контентом, SPA-приложениями и различными событиями страницы.
once: true для декоративных эффектов,
чтобы избежать повторного запуска при скролле.offset для синхронизации анимаций с
видимой частью экрана.AOS.refresh().Эти подходы позволяют создавать визуально привлекательные интерфейсы с плавными скролл-анимациями, сохраняя стабильность и производительность страницы.