Библиотека AOS (Animate on Scroll) позволяет добавлять анимации элементов при прокрутке страницы без сложной настройки вручную. Для начала работы необходимо подключить 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():
document.addEventListener('DOMContentLoaded', () => {
AOS.init({
// Глобальные настройки
duration: 800, // Длительность анимации в миллисекундах
easing: 'ease-in-out', // Функция ускорения
once: true, // Анимация срабатывает один раз
mirror: false // Повторная анимация при скролле вверх
});
});
Ключевые параметры инициализации:
linear, ease,
ease-in, ease-out,
ease-in-out.true, элемент анимируется
только один раз при первом появлении в области видимости.true, анимация
срабатывает повторно при прокрутке обратно.Чтобы применить анимацию к конкретному элементу, используется атрибут
data-aos:
<div data-aos="fade-up">Пример анимации Fade Up</div>
<div data-aos="zoom-in" data-aos-delay="200">Пример с задержкой</div>
Основные атрибуты:
fade, fade-up, fade-down,
fade-left, fade-right, zoom-in,
zoom-out, flip-left, flip-right,
slide-up, slide-down.Если элементы добавляются на страницу динамически, необходимо перезапускать AOS для их инициализации:
// После добавления новых элементов
AOS.refresh();
Использование AOS.refresh() важно в случаях, когда DOM
меняется после первоначальной загрузки страницы, например, при подгрузке
контента через AJAX или рендере компонентов на фронтенде.
В контексте CI/CD (Continuous Integration / Continuous Deployment) важно учитывать, что анимации AOS должны корректно работать в статических и динамически развертываемых приложениях:
Сборка и минификация CSS и JS файлы AOS можно подключать через npm и интегрировать в сборку с Webpack, Vite или Parcel:
npm install aos
import AOS from 'aos';
import 'aos/dist/aos.css';
AOS.init({ duration: 600, once: true });
Это позволяет уменьшить размер бандла и обеспечить контроль версий библиотеки через package.json.
Автоматическое тестирование визуальных изменений
В CI/CD можно настроить визуальные тесты (например, с использованием
Percy или Storybook) для проверки
корректной работы анимаций. Элементы с атрибутами data-aos
должны появляться в правильной позиции и с ожидаемыми
эффектами.
Оптимизация производительности При использовании AOS в продакшене важно проверять метрики загрузки страницы, чтобы анимации не ухудшали First Contentful Paint. Рекомендуется:
once: true для анимаций, которые не должны
повторяться.offset значения, чтобы анимации
запускались только при необходимости.Сгруппировать анимации по блокам – это улучшает восприятие и уменьшает нагрузку на рендер.
Использовать задержки и последовательные анимации для создания эффекта цепочки. Например:
<div data-aos="fade-up" data-aos-delay="0">Блок 1</div>
<div data-aos="fade-up" data-aos-delay="100">Блок 2</div>
<div data-aos="fade-up" data-aos-delay="200">Блок 3</div>Комбинировать с другими библиотеками для контроля состояния страницы, например с ScrollTrigger или GSAP, при необходимости более сложных эффектов и синхронизации анимаций.
AOS.init({ disable: 'mobile' }) позволяет
временно отключить анимации на мобильных устройствах для упрощения
отладки.aos-animate, которые добавляются библиотекой, чтобы понять
момент запуска анимации.AOS.refreshHard() полностью пересчитывает позиции всех
элементов, что полезно при изменении размеров или скрытых блоков.Использование AOS в сочетании с CI/CD обеспечивает предсказуемое, управляемое и тестируемое поведение анимаций на сайте или веб-приложении, улучшая UX и сохраняя производительность при динамическом развертывании контента.