Создание keyframes

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

Тренажер CSS

Эта серия заданий поможет вам освоить создание анимаций с помощью правила `@keyframes` в CSS. Вы будете практиковаться в определении ключевых кадров анимации, используя как ключевые слова `from` и `to`, так и процентные значения. Задания построены по принципу 'от простого к сложному': вы начнете с базового синтаксиса `@keyframes` и постепенно перейдете к созданию более сложных последовательностей анимации с изменением нескольких свойств и использованием трансформаций. Вам будет предоставлен готовый HTML и CSS код с пропусками, которые нужно будет заполнить для завершения анимации. Результат вы сможете увидеть визуально.

Список тем

Основы @keyframes: Объявление анимации

Ваша первая задача — объявить правило для анимации. В CSS коде пропущено ключевое слово, необходимое для создания именованной анимации. Допишите его, чтобы определить блок анимации с именем `fadeIn`.

CSS
input1 fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

.box {
  width: 100px;
  height: 100px;
  background-color: dodgerblue;
  /* Анимация будет применена в следующих заданиях */
}
HTML
<div class="box"></div>
Для определения последовательности анимации используется правило `@keyframes`, за которым следует имя анимации. Внутри фигурных скобок `{}` описываются ключевые кадры.
Заполнить ответами все поля
Результат
Сообщения
Выполнить
Отметить решенным
Показать подсказку

Простая анимация: от 'from' до 'to'

Создайте простую анимацию изменения прозрачности элемента от полностью прозрачного до полностью непрозрачного. В коде пропущены ключевые слова, обозначающие начальное и конечное состояние анимации. Заполните пропуски.

CSS
@keyframes simpleFade {
  input1 {
    opacity: 0;
  }
  input2 {
    opacity: 1;
  }
}

.box {
  width: 100px;
  height: 100px;
  background-color: mediumseagreen;
  animation-name: simpleFade;
  animation-duration: 3s;
}
HTML
<div class="box"></div>
Для определения начального и конечного состояний анимации внутри `@keyframes` используются ключевые слова `from` (эквивалентно 0%) и `to` (эквивалентно 100%).
Заполнить ответами все поля
Результат
Сообщения
Выполнить
Отметить решенным
Показать подсказку

Использование процентов: 0% и 100%

Альтернативный способ задания начального и конечного кадров — использование процентов. Замените ключевые слова `from` и `to` на их процентные эквиваленты для анимации изменения цвета фона.

CSS
@keyframes changeBackground {
  input1 {
    background-color: lightcoral;
  }
  input2 {
    background-color: lightskyblue;
  }
}

.box {
  width: 150px;
  height: 150px;
  border: 1px solid #ccc;
  animation-name: changeBackground;
  animation-duration: 4s;
}
HTML
<div class="box"></div>
Вместо `from` можно использовать `0%`, а вместо `to` — `100%`. Это позволяет более гибко управлять ключевыми кадрами, особенно когда их больше двух.
Заполнить ответами все поля
Результат
Сообщения
Выполнить
Отметить решенным
Показать подсказку

Промежуточные шаги: Добавляем 50%

Анимация может иметь промежуточные шаги. Добавьте ключевой кадр на 50% выполнения анимации, чтобы элемент сначала увеличивался в два раза, а затем возвращался к исходному размеру. Заполните пропуск, указав процент.

CSS
@keyframes pulseScale {
  0% {
    transform: scale(1);
  }
  input1 {
    transform: scale(1.5);
  }
  100% {
    transform: scale(1);
  }
}

.box {
  width: 80px;
  height: 80px;
  background-color: gold;
  margin: 50px auto;
  animation-name: pulseScale;
  animation-duration: 2s;
}
HTML
<div class="box"></div>
Вы можете добавлять любое количество ключевых кадров, используя проценты от 0% до 100%. Например, `50%` определяет состояние анимации ровно посередине.
Заполнить ответами все поля
Результат
Сообщения
Выполнить
Отметить решенным
Показать подсказку

Анимация нескольких свойств

Внутри одного ключевого кадра можно анимировать несколько CSS-свойств одновременно. Допишите пропущенное свойство `background-color` в кадре `100%`, чтобы квадрат не только смещался, но и менял цвет.

CSS
@keyframes moveAndColor {
  0% {
    transform: translateX(0);
    background-color: tomato;
  }
  100% {
    transform: translateX(100px);
    input1: lightgreen;
  }
}

.box {
  width: 70px;
  height: 70px;
  background-color: tomato;
  animation-name: moveAndColor;
  animation-duration: 3s;
}
HTML
<div class="box"></div>
Просто добавьте еще одно или несколько правил 'свойство: значение;' внутри того же блока ключевого кадра (например, внутри `100% { ... }`).
Заполнить ответами все поля
Результат
Сообщения
Выполнить
Отметить решенным
Показать подсказку

Применение анимации: Имя анимации

Мы определили анимацию `slideIn`, но она не применяется к элементу. Укажите имя этой анимации в свойстве `animation-name` для класса `.content`, чтобы текст плавно появлялся справа.

CSS
@keyframes slideIn {
  from {
    transform: translateX(100%);
    opacity: 0;
  }
  to {
    transform: translateX(0);
    opacity: 1;
  }
}

.content {
  padding: 20px;
  background-color: #eee;
  border-radius: 5px;
  overflow: hidden; /* Чтобы текст не вылезал при смещении */
  input1: slideIn;
  animation-duration: 1.5s;
}
HTML
<div class="content">
  Привет! Это анимированный текст.
</div>
Чтобы применить созданную `@keyframes` анимацию к элементу, используйте CSS-свойство `animation-name` и укажите в качестве значения имя вашей анимации (то, что идет после `@keyframes`).
Заполнить ответами все поля
Результат
Сообщения
Выполнить
Отметить решенным
Показать подсказку

Анимация трансформации: Вращение

Заставим изображение вращаться. Определите анимацию `spin`, которая будет изменять угол поворота элемента от 0 до 360 градусов. Заполните пропуски в свойстве `transform`.

CSS
@keyframes spin {
  from {
    transform: input1(0deg);
  }
  to {
    transform: input2(360deg);
  }
}

.icon {
  width: 100px;
  height: 100px;
  margin: 50px auto;
  animation-name: spin;
  animation-duration: 4s;
  animation-iteration-count: infinite; /* Бесконечное повторение */
  animation-timing-function: linear; /* Линейная скорость */
}
HTML
<img src="https://naytikurs.ru/img/7.png" alt="icon" class="icon">
Для вращения элемента используйте функцию `rotate()` в свойстве `transform`. Значение указывается в градусах (`deg`). Например, `transform: rotate(45deg);`.
Заполнить ответами все поля
Результат
Сообщения
Выполнить
Отметить решенным
Показать подсказку

Сложная последовательность: Несколько шагов

Создайте анимацию 'подпрыгивания'. Элемент должен сначала немного сместиться вниз (10%), затем подпрыгнуть вверх (50%), и вернуться на место (100%). Заполните пропуски, указав проценты для ключевых кадров.

CSS
@keyframes bounce {
  input1, input3 {
    transform: translateY(0);
    animation-timing-function: ease-out;
  }
  input2 {
    transform: translateY(-30px);
    animation-timing-function: ease-in;
  }
  /* Дополнительные шаги для реалистичности */
  70% {
     transform: translateY(-15px);
     animation-timing-function: ease-out;
  }
  90% {
     transform: translateY(-4px);
     animation-timing-function: ease-in;
  }
}

.ball {
  width: 50px;
  height: 50px;
  background-color: orangered;
  border-radius: 50%;
  margin: 50px auto;
  position: relative;
  animation: bounce 2s infinite;
}
HTML
<div class="ball"></div>
Разбейте анимацию на ключевые кадры: 0% (начало), 10% (небольшое смещение вниз), 50% (прыжок вверх), 100% (возврат на место). Используйте `transform: translateY()` для вертикального смещения.
Заполнить ответами все поля
Результат
Сообщения
Выполнить
Отметить решенным
Показать подсказку
НайтиКурс.Ру