Библиотека AOS предоставляет готовый набор CSS-анимаций, которые применяются к элементам при прокрутке страницы. Однако стандартные стили далеко не всегда соответствуют требованиям конкретного интерфейса. Гибкость AOS достигается за счёт возможности переопределения встроенных классов и создания собственных анимаций.
AOS использует два ключевых состояния элемента:
.aos-animate)Каждый элемент с атрибутом data-aos получает базовые
стили:
[data-aos] {
opacity: 0;
transition-property: transform, opacity;
}
После срабатывания анимации добавляется класс:
[data-aos].aos-animate {
opacity: 1;
transform: none;
}
Конкретная анимация определяется дополнительными стилями,
привязанными к значению data-aos, например:
[data-aos="fade-up"] {
transform: translateY(100px);
}
Для изменения поведения встроенной анимации достаточно переопределить соответствующий CSS-селектор.
Пример: изменение анимации fade-up
[data-aos="fade-up"] {
transform: translateY(200px);
opacity: 0;
}
[data-aos="fade-up"].aos-animate {
transform: translateY(0);
opacity: 1;
}
Ключевые моменты:
Хотя AOS поддерживает атрибуты data-aos-duration и
data-aos-delay, иногда удобнее управлять этим через
CSS.
Пример:
[data-aos="fade-up"] {
transition-duration: 1.5s;
transition-delay: 0.3s;
}
Преимущества:
По умолчанию используется стандартная функция сглаживания. Для изменения:
[data-aos] {
transition-timing-function: cubic-bezier(0.25, 0.1, 0.25, 1);
}
Пример более выразительной анимации:
[data-aos="zoom-in"] {
transition-timing-function: cubic-bezier(0.68, -0.55, 0.27, 1.55);
}
AOS поддерживает использование CSS custom properties, что упрощает настройку.
:root {
--aos-distance: 150px;
}
[data-aos="fade-up"] {
transform: translateY(var(--aos-distance));
}
Преимущества:
Стандартные анимации можно не использовать вовсе, задавая собственные
значения data-aos.
Пример:
<div data-aos="custom-slide"></div>
[data-aos="custom-slide"] {
transform: translateX(-100%);
opacity: 0;
transition: all 0.8s ease;
}
[data-aos="custom-slide"].aos-animate {
transform: translateX(0);
opacity: 1;
}
Особенности:
Важно учитывать, что AOS активно использует свойство
transform. При переопределении необходимо объединять
трансформации, иначе часть эффектов может потеряться.
Неправильно:
[data-aos="fade-up"] {
transform: scale(0.8);
}
Правильно:
[data-aos="fade-up"] {
transform: translateY(100px) scale(0.8);
}
Можно расширить логику AOS, добавляя собственные классы:
[data-aos].custom-start {
opacity: 0.2;
}
[data-aos].aos-animate.custom-start {
opacity: 1;
}
И в HTML:
<div data-aos="fade-up" class="custom-start"></div>
Переопределение стилей может зависеть от размера экрана:
@media (max-width: 768px) {
[data-aos="fade-up"] {
transform: translateY(50px);
}
}
Это позволяет:
Вместо отключения AOS через JavaScript можно убрать анимации стилями:
[data-aos] {
opacity: 1 !important;
transform: none !important;
transition: none !important;
}
Подходит для:
AOS применяет глобальные стили к элементам с data-aos.
Их можно изменить:
[data-aos] {
will-change: transform, opacity;
backface-visibility: hidden;
}
Оптимизация:
will-change улучшает производительностьbackface-visibility предотвращает артефакты при
анимацииЧтобы гарантировать применение пользовательских стилей:
aos.cssbody [data-aos="fade-up"] {
transform: translateY(120px);
}
!important (в крайних случаях)При использовании других анимационных решений (например, CSS frameworks) возможно переопределение конфликтующих свойств:
[data-aos] {
animation: none;
}
или:
[data-aos].aos-animate {
animation: customAnimation 1s ease forwards;
}
Рекомендуемый подход:
/* Базовые переопределения */
[data-aos] {}
/* Модификации стандартных анимаций */
[data-aos="fade-up"] {}
[data-aos="zoom-in"] {}
/* Кастомные анимации */
[data-aos="custom-*"] {}
/* Адаптив */
@media (...) {}
Это упрощает поддержку и масштабирование проекта.
Частые проблемы:
.aos-animateИнструменты:
outline или
backgroundПереопределение стандартных стилей AOS превращает библиотеку из набора готовых эффектов в инструмент с полной кастомизацией анимационного поведения интерфейса.