Для использования библиотеки AOS (Animate on Scroll) необходимо подключить её CSS и JS файлы. Наиболее распространённый способ — локальное подключение, когда файлы находятся в проекте.
Структура подключения локальных файлов:
<link rel="stylesheet" href="aos/aos.css">
<script src="aos/aos.js"></script>
Где aos.css отвечает за стили анимации, а
aos.js — за инициализацию и управление анимациями при
прокрутке. Файлы обычно располагаются в отдельной папке aos
внутри проекта, чтобы было удобно управлять зависимостями.
После подключения файлов необходимо инициализировать библиотеку. Это
делается с помощью метода AOS.init(), который можно вызвать
после загрузки DOM:
document.addEventListener('DOMContentLoaded', () => {
AOS.init({
duration: 1200, // длительность анимации в миллисекундах
easing: 'ease-in-out', // тип кривой ускорения
once: true, // анимация срабатывает только один раз
mirror: false, // анимация повторяется при прокрутке вверх
});
});
Ключевые параметры:
ease, ease-in, ease-out,
linear, и др.).true, анимация происходит
один раз при первом появлении элемента в зоне видимости.true, элементы
анимируются как при прокрутке вниз, так и при возврате вверх.Для каждого элемента, который нужно анимировать при скролле,
добавляется атрибут data-aos с указанием типа анимации:
<div data-aos="fade-up">Анимируемый блок</div>
<div data-aos="flip-left" data-aos-delay="300">Блок с задержкой</div>
Часто используемые значения
data-aos:
fade — плавное появление.fade-up, fade-down,
fade-left, fade-right — появление сдвигом в
выбранном направлении.flip-left, flip-right,
flip-up, flip-down — переворот по указанной
оси.zoom-in, zoom-out — масштабирование.slide-up, slide-down — выезд элемента
из-за границы экрана.Дополнительные атрибуты для тонкой настройки:
data-aos-delay="300" — задержка перед началом анимации
в миллисекундах.data-aos-duration="1000" — индивидуальная длительность
анимации элемента.data-aos-offset="200" — смещение начала анимации
относительно верхнего края экрана.data-aos-easing="ease-in-sine" — локальный тип
ускорения для элемента.При работе с локальными файлами следует учитывать структуру проекта:
project/
├─ index.html
├─ css/
│ └─ style.css
├─ js/
│ └─ main.js
├─ aos/
├─ aos.css
└─ aos.js
Подключение в HTML относительно структуры:
<link rel="stylesheet" href="aos/aos.css">
<script src="aos/aos.js"></script>
<script src="js/main.js" defer></script>
Использование defer гарантирует, что скрипт
main.js выполнится после загрузки DOM, инициализация AOS
будет корректной.
Если элементы добавляются в DOM после первичной инициализации, их необходимо заново инициировать:
AOS.refresh(); // обновление всех элементов
Для динамического добавления блока:
const newElement = document.createElement('div');
newElement.setAttribute('data-aos', 'fade-up');
newElement.textContent = 'Новый блок';
document.body.appendChild(newElement);
AOS.refresh(); // пересканировать DOM
Это позволяет анимации корректно срабатывать для всех элементов, включая динамически загруженные.
Для проектов с большим количеством анимируемых элементов рекомендуется:
once: true, чтобы анимация не
повторялась при каждой прокрутке.data-aos-offset, чтобы анимация срабатывала
чуть позже появления элемента, снижая нагрузку на рендеринг.Можно комбинировать AOS с собственными CSS-классами для создания уникальных эффектов:
.my-custom {
background-color: #f0f0f0;
border-radius: 8px;
}
<div class="my-custom" data-aos="zoom-in" data-aos-duration="1500">
Кастомизированный блок
</div>
Также можно использовать события AOS для запуска сторонних скриптов:
document.addEventListener('aos:in:fade-up', ({ detail }) => {
console.log('Элемент появился:', detail);
});
Это открывает возможности интеграции анимаций с логикой приложения и взаимодействием пользователя.
AOS предоставляет методы для управления анимациями в реальном времени:
AOS.refresh() — пересканирование всех элементов.AOS.refreshHard() — полное обновление со сбросом
анимаций.AOS.init({ /* параметры */ }) — повторная инициализация
с новыми настройками.Такой подход полезен для страниц с изменяющимся контентом, AJAX-подгрузкой или динамическими компонентами.