0Pricing
React Academy · Урок

Анимации CSS с ключевыми кадрами в React

Динамически применяйте и удаляйте анимации @keyframes в зависимости от состояния компонента и событий.

«Анимации CSS с ключевыми кадрами в React» — бесплатный урок React Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения React Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс React Academy содержит 4 уроков всего.

Определение @keyframes

Правило @keyframes описывает многоэтапную анимацию, задавая значения свойств в точках временной шкалы с помощью from/to или процентов, например 0%, 50%, 100%.

В отличие от переходов, ключевые кадры могут описывать сложное многоэтапное движение, которое выполняется самостоятельно и не требует изменения состояния на каждом шаге.

Сокращённая запись анимации

Набор ключевых кадров применяется с помощью свойства animation: animation: slideIn 400ms ease forwards. В нём объединены имя, длительность, функция времени и режим заполнения.

Режим заполнения forwards сохраняет для элемента значения последнего ключевого кадра после завершения анимации, предотвращая возврат к начальному состоянию.

Применение класса анимации через состояние

В React обычно добавляют класс, содержащий объявление animation, когда состояние становится истинным. Например, добавление класса is-entering запускает ключевые кадры в момент монтирования элемента или переключения флага.

Так логика анимации остаётся в CSS, а React лишь определяет, когда присоединить класс.

Режим заполнения анимации

animation-fill-mode определяет, какие стили применяются до и после выполнения анимации. forwards сохраняет последний ключевой кадр, backwards применяет первый ключевой кадр во время задержки, а both делает и то, и другое.

Без forwards элемент, анимируемый до состояния плавного появления, после завершения анимации снова стал бы невидимым.

Чередование направления анимации

animation-direction: alternate воспроизводит анимацию вперёд, а затем назад при каждой итерации. В сочетании с animation-iteration-count: infinite это создаёт плавное движение туда-обратно, напоминающее пульсацию или дыхание.

Такой эффект удобен для индикаторов загрузки или ненавязчивого привлечения внимания движением.

Приостановка с помощью состояния воспроизведения анимации

animation-play-state может иметь значение running или paused. Управлять им можно из состояния React: например, при наведении курсора поставить бегущую строку на паузу, сменив класс.

Поскольку анимация приостанавливается, а не сбрасывается, после возобновления она продолжается ровно с того места, на котором остановилась.

Повторный запуск при изменении свойства key

Кадровая анимация воспроизводится только один раз, когда её класс применяют впервые; повторное добавление того же класса не запускает её заново. Самый простой приём в React — изменить значение key, чтобы React смонтировал новый узел и воспроизвёл анимацию с начала.

Например, key={count} у уведомления повторно монтирует его при каждом увеличении count.

Учет настройки уменьшенного движения

Некоторые пользователи включают уменьшение движения в своей OS для комфорта или доступности. Оберните необязательные анимации в @media (prefers-reduced-motion: reduce) и отключите или сократите их внутри этого блока.

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

Запуск при прокрутке с помощью IntersectionObserver

Чтобы анимировать элементы при их появлении в области просмотра, используйте IntersectionObserver в useEffect. Когда наблюдаемый элемент становится видимым, установите состояние — это добавит класс анимации.

Так можно создавать эффекты появления при прокрутке без ресурсоёмких обработчиков прокрутки, работающих на каждом кадре.

Управление последовательностью с помощью animation-delay

animation-delay задаёт задержку начала каждой кадровой анимации, создавая между ними интервалы. Если для списка элементов задать постепенно увеличивающиеся задержки, они будут анимироваться последовательно, создавая срежиссированный эффект появления.

В React задержку для каждого элемента можно вычислить с помощью style={{ animationDelay: i * 80 + 'ms' }}.

Кадровые анимации и переходы

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

И то и другое реализуется средствами CSS, поэтому React лишь определяет, когда добавлять классы, а браузер обрабатывает кадры.

Быстрая проверка

Проверьте, насколько хорошо Вы понимаете поведение кадровых анимаций.

Итоги

Вы научились определять @keyframes, применять их с помощью сокращённой записи animation, управлять режимом заполнения и направлением, приостанавливать и повторно запускать анимации, а также показывать элементы при прокрутке с помощью IntersectionObserver.

Вы также узнали, как учитывать настройку prefers-reduced-motion для создания доступной анимации.

Часто задаваемые вопросы

Урок «Анимации CSS с ключевыми кадрами в React» бесплатный?

Да — полный текст урока «Анимации CSS с ключевыми кадрами в React» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс React Academy, подпишись на CoddyKit PRO. Курс React Academy содержит 4 уроков всего.

Чему я научусь в уроке «Анимации CSS с ключевыми кадрами в React»?

Динамически применяйте и удаляйте анимации @keyframes в зависимости от состояния компонента и событий. Ты практикуешь React Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать React Academy?

Предыдущий опыт не требуется. React Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Анимации CSS с ключевыми кадрами в React»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке React Academy?

Да. Каждый урок React Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Переходы CSS при изменении состояния React
  2. Анимации CSS с ключевыми кадрами в React
  3. useLayoutEffect для измерений перед анимацией
  4. Анимации появления и исчезновения без библиотеки
← Назад к React Academy