Для начала работы с библиотекой AOS необходимо подключить её к
проекту. Библиотека распространяется через CDN или npm-пакет. После
подключения важно вызвать метод инициализации AOS.init(),
который активирует отслеживание элементов при скролле.
AOS.init({
duration: 1200, // длительность анимации в миллисекундах
easing: 'ease-in-out', // способ изменения скорости анимации
once: true, // воспроизводить анимацию только один раз
offset: 100 // смещение триггера анимации относительно видимой области
});
Ключевые параметры и их значение:
duration — задаёт время, за которое элемент полностью
анимируется.easing — определяет кривую изменения скорости (linear,
ease, ease-in, ease-out).once — указывает, будет ли анимация повторяться при
повторном скролле.offset — величина смещения от точки видимости, при
которой анимация активируется.Элементы анимируются с помощью атрибутов data-aos в
HTML. Основные встроенные эффекты включают: fade,
fade-up, fade-down, flip-left,
zoom-in и другие.
<div data-aos="fade-up" data-aos-duration="1500" data-aos-delay="300">
Контент с анимацией
</div>
Атрибуты для индивидуальной настройки анимации:
data-aos-duration — переопределяет глобальную
длительность для конкретного элемента.data-aos-delay — задаёт задержку перед запуском
анимации.data-aos-offset — смещение триггера для конкретного
элемента.data-aos-easing — локальная кривая
ускорения/замедления.AOS позволяет использовать собственные эффекты, создавая CSS-анимации
и привязывая их к классам с помощью data-aos.
@keyframes slide-fade {
0% {
opacity: 0;
transform: translateX(-50px);
}
100% {
opacity: 1;
transform: translateX(0);
}
}
.my-slide-fade {
animation-name: slide-fade;
animation-fill-mode: both;
}
<div data-aos="my-slide-fade">
Элемент с кастомной анимацией
</div>
data-aos-duration,
data-aos-delay).Для более сложных эффектов можно объединять несколько CSS-анимаций.
Важно учитывать, что каждая анимация должна иметь уникальное имя и
соответствующую настройку animation-fill-mode: both, чтобы
сохранялся конечный вид элемента после завершения анимации.
@keyframes rotate-fade {
0% {
opacity: 0;
transform: rotate(-15deg);
}
100% {
opacity: 1;
transform: rotate(0deg);
}
}
.rotate-fade {
animation-name: rotate-fade;
animation-fill-mode: both;
animation-duration: 1s;
}
<div data-aos="rotate-fade" data-aos-delay="500">
Комбинированная анимация
</div>
Библиотека предоставляет события, которые позволяют запускать кастомный JavaScript при активации анимации:
aos:in — элемент вошёл в видимую область.aos:out — элемент вышел из видимой области.document.addEventListener('aos:in', ({ detail }) => {
if(detail.classList.contains('special')) {
console.log('Элемент special появился на экране');
}
});
С помощью этих событий можно добавлять интерактивность, динамически изменять стили или запускать дополнительные эффекты, которые не ограничены только CSS.
Для разных устройств можно использовать медиазапросы и условную активацию анимации через JavaScript. Например, отключать сложные анимации на мобильных устройствах:
if(window.innerWidth > 768) {
AOS.init({ duration: 1000, once: true });
}
Также можно динамически менять data-aos атрибуты в
зависимости от ширины экрана или других условий:
const elements = document.querySelectorAll('.responsive-animation');
elements.forEach(el => {
el.setAttribute('data-aos', window.innerWidth > 1024 ? 'fade-up' : 'fade');
});
once: true для тяжелых эффектов, чтобы
анимация не повторялась при каждом скролле.opacity и transform менее
ресурсоёмкие, чем width или height.Эта методика позволяет не только использовать готовые эффекты библиотеки AOS, но и создавать уникальные анимации, управлять ими через атрибуты и события, обеспечивая гибкую и производительную анимацию элементов на странице.