Для начала работы с библиотекой AOS (Animate on Scroll) необходимо подключить CSS и JS файлы библиотеки к проекту. Стандартная структура подключения выглядит следующим образом:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/aos@2.3.4/dist/aos.css" />
<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, // Повторять анимацию при скролле вверх
anchorPlacement: 'top-bottom' // Точка привязки анимации относительно окна просмотра
});
Каждый элемент, который должен анимироваться, требует установки data-атрибутов, определяющих тип и параметры анимации:
data-aos — указывает тип анимации
(fade-up, fade-down, zoom-in,
flip-left и др.).data-aos-duration — локальная длительность анимации для
конкретного элемента (мс).data-aos-delay — задержка перед началом анимации
(мс).data-aos-offset — смещение точки старта анимации для
конкретного элемента (px).data-aos-easing — локальная функция сглаживания.data-aos-once — если true, элемент
анимируется один раз, даже если пользователь скроллит обратно.Пример использования:
<div data-aos="fade-up" data-aos-duration="800" data-aos-delay="200">
Контент с анимацией
</div>
AOS предоставляет несколько методов, позволяющих контролировать анимации на уровне жизненного цикла элементов:
AOS.refresh() — пересчитывает позиции элементов на
странице. Используется после динамического добавления или изменения
контента.AOS.refreshHard() — полная перезагрузка библиотеки,
которая очищает все предыдущие анимации и пересчитывает их заново.AOS.init() — повторная инициализация с новыми
настройками.Если на страницу загружается контент через AJAX или создаются новые элементы, нужно обновить AOS, чтобы они корректно анимировались:
fetch('/api/items')
.then(response => response.json())
.then(data => {
const container = document.querySelector('#items-container');
data.forEach(item => {
const div = document.createElement('div');
div.textContent = item.name;
div.setAttribute('data-aos', 'fade-left');
container.appendChild(div);
});
AOS.refresh(); // Пересчитываем позиции новых элементов
});
Библиотека позволяет подписываться на ключевые события анимаций, что расширяет возможности управления:
aos:in — элемент вошел в область видимости и анимация
запущена.aos:out — элемент вышел из области видимости.Пример использования:
document.addEventListener('aos:in', ({ detail }) => {
console.log('Элемент анимируется:', detail);
});
Эти события позволяют синхронизировать дополнительные действия с анимацией, например запуск видео, изменение классов или запуск сторонних эффектов.
Для сложных проектов можно создавать разные конфигурации AOS для отдельных областей страницы:
const aosConfig = {
duration: 600,
easing: 'ease-in-out',
once: true
};
AOS.init(aosConfig);
Для отдельных элементов конфигурация может быть переопределена через data-атрибуты, что позволяет комбинировать глобальные и локальные настройки.
once: true для статичных страниц, чтобы
уменьшить нагрузку на рендер при скролле.AOS.refresh()), избегая частых вызовов в
скролл-событиях.Контроль жизненного цикла анимаций через методы, события и настройки AOS обеспечивает гибкость и позволяет создавать сложные интерактивные интерфейсы с плавной и предсказуемой анимацией элементов при скролле.