Библиотека AOS (Animate on Scroll) позволяет создавать анимации элементов при их появлении в области видимости браузера. Основные возможности AOS строятся на комбинации CSS-свойств и событий скролла, при этом ключевыми инструментами для сложных визуальных эффектов остаются keyframes и transform.
Keyframes в CSS позволяют задать последовательность изменений свойств элемента во времени. В контексте AOS keyframes дают возможность определить уникальные анимации, которые будут запускаться при скролле. Пример базовой анимации:
@keyframes fadeInUp {
0% {
opacity: 0;
transform: translateY(20px);
}
100% {
opacity: 1;
transform: translateY(0);
}
}
.my-element {
animation: fadeInUp 1s ease forwards;
}
В AOS можно подключить эту анимацию через кастомный класс:
<div class="my-element" data-aos="fade-up"></div>
При использовании data-aos встроенные эффекты библиотеки автоматически применяют transform и opacity, но при необходимости можно расширить их кастомными keyframes для более сложных последовательностей, таких как вращение, масштабирование или комбинированные движения.
Свойство transform позволяет изменять положение, размер и ориентацию элементов в пространстве. В AOS чаще всего применяются следующие виды трансформаций:
translateX() и translateY() – смещение
элемента по оси X или Y.scale() – изменение масштаба элемента.rotate() – вращение элемента вокруг оси.skew() – наклон элемента по оси X или Y.Пример комбинированной анимации с использованием transform:
@keyframes zoomRotate {
0% {
opacity: 0;
transform: scale(0.5) rotate(-45deg);
}
100% {
opacity: 1;
transform: scale(1) rotate(0deg);
}
}
.zoom-rotate-element {
animation: zoomRotate 1.2s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}
Такой подход позволяет создавать плавные и динамичные эффекты, которые при скролле выглядят естественно и привлекают внимание.
Помимо стандартных атрибутов data-aos, можно управлять
анимациями через Jav * aScript:
AOS.init({
duration: 1200,
easing: 'ease-in-out',
once: true, // Анимация срабатывает только один раз
mirror: false // Анимация повторяется при скролле вверх
});
duration определяет общую длительность анимации.easing управляет кривой скорости.once и mirror влияют на повторяемость
анимаций при прокрутке страницы.При этом transform внутри keyframes корректно интерпретируется AOS, что позволяет комбинировать встроенные эффекты с кастомными анимациями.
Для сложных анимаций можно использовать кастомные keyframes вместе с data-атрибутами:
<div class="custom-card" data-aos="custom-fade-rotate"></div>
@keyframes customFadeRotate {
0% {
opacity: 0;
transform: translateY(50px) rotate(-10deg);
}
50% {
opacity: 0.5;
transform: translateY(20px) rotate(5deg);
}
100% {
opacity: 1;
transform: translateY(0) rotate(0deg);
}
}
[data-aos="custom-fade-rotate"] {
animation: customFadeRotate 1.5s ease-out forwards;
}
Такой подход позволяет:
opacity и transform, чтобы элемент не
«прыгал» при появлении.transform и opacity вместо
top/left или margin повышает
производительность, так как это аппаратно ускоренные свойства.Эффективное использование keyframes и transform в AOS открывает путь к созданию профессионально выглядящих скролл-анимаций, которые работают плавно и красиво на всех современных браузерах.