Стандартные easing-функции

Библиотека AOS (Animate on Scroll) предоставляет мощный инструмент для анимации элементов при прокрутке страницы. Одним из ключевых аспектов настройки анимации является easing — способ изменения скорости анимации во времени. Easing-функции позволяют создавать плавные, естественные движения, вместо линейного и механического перемещения элементов.


Основные принципы работы easing

Easing определяет зависимость между временем анимации и пройденным прогрессом анимации. В AOS easing задаётся через атрибут data-aos-easing или через глобальные настройки при инициализации:

AOS.init({
  easing: 'ease-out-back'
});

Возможные значения поддерживают как CSS-совместимые функции, так и стандартные предустановленные значения, определённые в библиотеке:

  • linear — линейная скорость движения. Прогресс анимации распределяется равномерно по времени.
  • ease — стандартная функция плавного начала и конца движения.
  • ease-in — ускорение в начале анимации, замедление в конце не выражено.
  • ease-out — замедление к концу анимации, старт плавный.
  • ease-in-out — сочетание ускорения в начале и замедления в конце, обеспечивает гармоничное движение.
  • ease-in-back / ease-out-back / ease-in-out-back — создаёт эффект «отскока» при старте или завершении анимации.
  • ease-in-sine / ease-out-sine / ease-in-out-sine — синусоидальное ускорение и замедление для более мягкой динамики.
  • ease-in-quad / ease-out-quad / ease-in-out-quad — квадратичная кривая изменения скорости.
  • ease-in-cubic / ease-out-cubic / ease-in-out-cubic — кубическая кривая ускорения/замедления.
  • ease-in-quart / ease-out-quart / ease-in-out-quart — более резкое ускорение по сравнению с кубической кривой.
  • ease-in-quint / ease-out-quint / ease-in-out-quint — ещё более выраженное ускорение, подходящее для динамичных эффектов.

Каждое значение оказывает существенное влияние на визуальное восприятие анимации. Например, ease-out-back создаёт эффект, когда элемент слегка «выходит за границу» перед остановкой, что часто используется для заголовков и кнопок.


Применение easing на отдельных элементах

Easing можно задавать для каждого элемента индивидуально с помощью атрибута data-aos-easing:

<div data-aos="fade-up" data-aos-duration="1200" data-aos-easing="ease-in-out-cubic">
  Контент с индивидуальной анимацией
</div>
  • data-aos определяет тип анимации.
  • data-aos-duration задаёт длительность в миллисекундах.
  • data-aos-easing устанавливает способ ускорения/замедления.

Использование индивидуального easing позволяет комбинировать разные визуальные эффекты на странице, делая интерфейс более живым и динамичным.


Взаимодействие easing с duration и delay

Easing тесно связан с продолжительностью анимации (duration) и задержкой (delay):

  • Длительная анимация + мягкий easing создаёт медленное, плавное появление элементов.
  • Короткая анимация + резкий easing усиливает ощущение динамики и всплеска внимания.
  • Delay позволяет синхронизировать элементы с разными easing, создавая каскадные эффекты.

Пример с каскадным появлением списка:

<ul>
  <li data-aos="fade-up" data-aos-duration="800" data-aos-easing="ease-out" data-aos-delay="0">Пункт 1</li>
  <li data-aos="fade-up" data-aos-duration="800" data-aos-easing="ease-out" data-aos-delay="100">Пункт 2</li>
  <li data-aos="fade-up" data-aos-duration="800" data-aos-easing="ease-out" data-aos-delay="200">Пункт 3</li>
</ul>

Такой подход создаёт естественный визуальный ритм при появлении нескольких элементов, избегая ощущения «зависания» или «резкости».


Рекомендации по выбору easing

  • Для текста и контента обычно применяются мягкие функции: ease, ease-in-out, ease-out-sine.
  • Для кнопок и интерактивных элементов подходят ease-out-back или ease-in-out-back, чтобы добавить динамичности.
  • Для крупных блоков или изображений — мягкие квадратичные или кубические easing (ease-in-out-quad, ease-in-out-cubic), чтобы движение выглядело естественно.

Чрезмерное использование резких easing-функций может создавать ощущение хаотичности. Оптимально использовать один тип easing для всей страницы и индивидуальные функции лишь для ключевых элементов.


Настройка глобального easing

Глобальная настройка через AOS.init позволяет стандартизировать поведение всех анимаций на странице:

AOS.init({
  duration: 1000,
  easing: 'ease-in-out',
  once: true
});
  • duration — стандартная длительность всех анимаций.
  • easing — общая плавность движения.
  • once — анимация выполняется только при первом скролле.

Такой подход облегчает поддержку интерфейса и делает визуальный стиль единообразным.


Синхронизация easing с пользовательскими анимациями

Для более сложных проектов AOS можно использовать совместно с CSS-трансформациями и JavaScript-анимациями. В этом случае easing играет роль координирующего элемента между скроллом и динамикой объекта:

.custom-animation {
  transform: translateY(50px);
  transition: transform 1s cubic-bezier(0.68, -0.55, 0.27, 1.55);
}

Использование cubic-bezier расширяет возможности стандартных easing, создавая уникальные кривые ускорения и замедления, полностью контролируемые дизайнером.


Стандартные easing-функции в AOS обеспечивают гибкость и выразительность анимаций при прокрутке, позволяя создавать как плавные, мягкие эффекты, так и динамичные, акцентные движения. Правильный выбор easing формирует естественное восприятие интерфейса и улучшает пользовательский опыт на всех устройствах.