Свойство animation-delay

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

Тренажер CSS

В этой серии заданий мы сосредоточимся на свойстве CSS `animation-delay`. Это свойство позволяет указать задержку перед началом анимации элемента. Вы узнаете, как использовать `animation-delay` для управления временем запуска анимаций, создавая последовательные или синхронизированные эффекты.
Задания охватывают применение положительных значений задержки для отсрочки старта анимации, использование отрицательных значений для запуска анимации "с середины", а также интеграцию `animation-delay` в сокращенное свойство `animation`. Вы попрактикуетесь в применении задержек к одному или нескольким элементам, создавая интересные визуальные последовательности. Мы также рассмотрим использование различных единиц времени, таких как секунды (`s`) и миллисекунды (`ms`). Эти упражнения помогут вам лучше понять и эффективно использовать `animation-delay` для создания более динамичных и контролируемых анимаций на ваших веб-страницах.

Список тем

Простая задержка анимации

Задайте задержку для анимации квадрата. Анимация 'slide-in' уже определена и применена к элементу с id 'box'. Ваша задача — добавить свойство, отвечающее за задержку анимации, и установить эту задержку равной 2 секундам, чтобы квадрат появлялся не сразу.

CSS
@keyframes slide-in {
  from {
    transform: translateX(-100px);
    opacity: 0;
  }
  to {
    transform: translateX(0);
    opacity: 1;
  }
}

#box {
  width: 50px;
  height: 50px;
  background-color: #3498db;
  animation-name: slide-in;
  animation-duration: 1s;
  /* Добавьте свойство задержки ниже */
  input1: input2;
}
HTML
<div id="box"></div>
Используйте свойство `animation-delay`, чтобы установить время ожидания перед началом анимации. Значение времени указывается в секундах (s) или миллисекундах (ms). В данном случае нужно установить значение '2s'.
Заполнить ответами все поля
Результат
Сообщения
Выполнить
Отметить решенным
Показать подсказку

Разные задержки для нескольких элементов

Заставьте три круга появляться последовательно с разной задержкой. Анимация 'fade-in' применена ко всем элементам с классом 'circle'. Используйте селекторы `:nth-child`, чтобы задать разную задержку для каждого круга: 0.5с для первого, 1с для второго и 1.5с для третьего.

CSS
@keyframes fade-in {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

.circle {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  margin: 10px;
  background-color: #e74c3c;
  opacity: 0; /* Start hidden */
  animation-name: fade-in;
  animation-duration: 0.5s;
  animation-fill-mode: forwards; /* Keep final state */
}

.circle:nth-child(1) {
  input1: 0.5s;
}

.circle:nth-child(2) {
  input2: 1s;
}

.circle:nth-child(3) {
  input3: 1.5s;
}
HTML
<div class="circle"></div>
<div class="circle"></div>
<div class="circle"></div>
Для выбора каждого круга используйте псевдоклассы `:nth-child(1)`, `:nth-child(2)` и `:nth-child(3)`. Внутри каждого правила установите соответствующее значение для свойства `animation-delay`.
Заполнить ответами все поля
Результат
Сообщения
Выполнить
Отметить решенным
Показать подсказку

Отрицательная задержка

Используйте отрицательное значение задержки, чтобы анимация вращения шестеренки началась не с самого начала. Анимация 'spin' длится 4 секунды. Установите задержку -1 секунда, чтобы анимация началась так, будто она уже шла 1 секунду.

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

img {
  width: 80px;
  height: 80px;
  display: block;
  margin: 50px auto;
  animation-name: spin;
  animation-duration: 4s;
  animation-iteration-count: infinite;
  animation-timing-function: linear;
  /* Добавьте отрицательную задержку */
  input1: input2;
}
HTML
<img src="https://naytikurs.ru/img/7.png" alt="Gear">
Свойство `animation-delay` может принимать отрицательные значения. Отрицательное значение, например `-1s`, заставит анимацию начаться немедленно, но так, как будто она уже проигрывалась в течение 1 секунды.
Заполнить ответами все поля
Результат
Сообщения
Выполнить
Отметить решенным
Показать подсказку

Задержка в сокращенном свойстве animation

Задайте анимацию 'pulse' для квадрата, используя сокращенное свойство `animation`. Анимация должна длиться 2 секунды, повторяться бесконечно и иметь задержку перед первым запуском в 1 секунду. Заполните пропуск в значении свойства `animation`.

CSS
@keyframes pulse {
  0%, 100% {
    transform: scale(1);
    opacity: 1;
  }
  50% {
    transform: scale(1.1);
    opacity: 0.7;
  }
}

#pulsing-box {
  width: 60px;
  height: 60px;
  background-color: #9b59b6;
  margin: 50px auto;
  /* Задайте имя, длительность, повторение и задержку */
  animation: pulse 2s infinite input1;
}
HTML
<div id="pulsing-box"></div>
Сокращенное свойство `animation` позволяет задать несколько параметров анимации в одной строке. Порядок значений важен, но `animation-delay` обычно указывается после `animation-duration`. Пример: `animation: pulse 2s infinite 1s;`. Вам нужно добавить значение задержки `1s` в указанное место.
Заполнить ответами все поля
Результат
Сообщения
Выполнить
Отметить решенным
Показать подсказку

Последовательное появление картинок

Сделайте так, чтобы три картинки плавно появлялись одна за другой. Анимация 'fade-in-up' уже определена и применена ко всем картинкам. Задайте задержку 0.3 секунды для второй картинки и 0.6 секунд для третьей, используя свойство `animation-delay`.

CSS
@keyframes fade-in-up {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

img {
  width: 80px;
  height: 80px;
  margin: 10px;
  opacity: 0; /* Start hidden */
  animation-name: fade-in-up;
  animation-duration: 0.5s;
  animation-fill-mode: forwards;
  /* Первая картинка появляется без задержки */
}

img:nth-of-type(2) {
  /* Задержка для второй картинки */
  animation-delay: input1;
}

img:nth-of-type(3) {
  /* Задержка для третьей картинки */
  animation-delay: input2;
}
HTML
<img src="https://naytikurs.ru/img/1.png" alt="Image 1">
<img src="https://naytikurs.ru/img/2.png" alt="Image 2">
<img src="https://naytikurs.ru/img/4.png" alt="Image 3">
Используйте селекторы `:nth-of-type(2)` и `:nth-of-type(3)` для выбора второй и третьей картинок соответственно. Для каждой из них установите свойство `animation-delay` с нужным значением (0.3s и 0.6s).
Заполнить ответами все поля
Результат
Сообщения
Выполнить
Отметить решенным
Показать подсказку

Задержка в миллисекундах

Задайте очень короткую задержку для анимации 'bounce'. Используйте миллисекунды для установки задержки. Анимация должна начаться через 500 миллисекунд после загрузки.

CSS
@keyframes bounce {
  0%, 20%, 50%, 80%, 100% {
    transform: translateY(0);
  }
  40% {
    transform: translateY(-30px);
  }
  60% {
    transform: translateY(-15px);
  }
}

.ball {
  width: 40px;
  height: 40px;
  background-color: #f1c40f;
  border-radius: 50%;
  margin: 50px auto;
  animation-name: bounce;
  animation-duration: 2s;
  /* Добавьте задержку в миллисекундах */
  input1: input2;
}
HTML
<div class="ball"></div>
Свойство `animation-delay` принимает значения не только в секундах (s), но и в миллисекундах (ms). 1 секунда равна 1000 миллисекундам. Чтобы установить задержку в 500 миллисекунд, используйте значение `500ms`.
Заполнить ответами все поля
Результат
Сообщения
Выполнить
Отметить решенным
Показать подсказку

Несколько анимаций с разными задержками

Примените две анимации к одному элементу: 'move' (движение вправо и обратно) и 'change-color' (смена цвета). Анимация 'move' должна начаться через 1 секунду, а 'change-color' — через 2 секунды. Используйте одно свойство `animation` для задания обеих анимаций.

CSS
@keyframes move {
  0%, 100% { left: 0; }
  50% { left: 100px; }
}

@keyframes change-color {
  0%, 100% { background-color: #1abc9c; }
  50% { background-color: #e74c3c; }
}

.multi-animated {
  width: 50px;
  height: 50px;
  position: relative;
  background-color: #1abc9c;
  margin: 30px;
  /* Примените обе анимации с их задержками */
  animation: input1, input2;
}
HTML
<div class="multi-animated"></div>
Чтобы применить несколько анимаций к одному элементу, перечислите их параметры через запятую в свойстве `animation`. Для каждой анимации укажите имя, длительность и задержку. Пример: `animation: move 3s 1s, change-color 4s 2s;`.
Заполнить ответами все поля
Результат
Сообщения
Выполнить
Отметить решенным
Показать подсказку

Последовательная пульсация

Создайте эффект последовательной пульсации для четырех квадратов. Анимация 'pulse-simple' уже определена и должна применяться ко всем квадратам бесконечно. Задайте задержку так, чтобы квадраты начинали пульсировать по очереди с интервалом 0.2 секунды (0s, 0.2s, 0.4s, 0.6s).

CSS
@keyframes pulse-simple {
  50% {
    transform: scale(1.2);
  }
}

.square {
  width: 30px;
  height: 30px;
  background-color: #2ecc71;
  margin: 10px;
  display: inline-block;
  animation-name: pulse-simple;
  animation-duration: 1s;
  animation-iteration-count: infinite;
  animation-direction: alternate;
}

/* Задержки для последовательной анимации */
.square:nth-child(1) {
  animation-delay: 0s;
}
.square:nth-child(2) {
  animation-delay: input1;
}
.square:nth-child(3) {
  animation-delay: input2;
}
.square:nth-child(4) {
  animation-delay: input3;
}
HTML
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
Используйте псевдоклассы `:nth-child` для выбора каждого квадрата. Для второго, третьего и четвертого квадратов установите свойство `animation-delay` со значениями 0.2s, 0.4s и 0.6s соответственно. Первому квадрату задержка не нужна (или можно указать 0s).
Заполнить ответами все поля
Результат
Сообщения
Выполнить
Отметить решенным
Показать подсказку
НайтиКурс.Ру