Чтобы сделать анимацию какого-нибудь элемента на странице, раньше мы должны были использовать JQuery . Но CSS3 и тут нам облегчил задачу, т.к. теперь мы можем обойтись без скриптов. Вот в этом материале давайте и поговорим о том, как анимировать элемент на странице с помощью CSS3 .

Анимация на CSS3.

Чтобы сделать анимацию какого-нибудь элемента на странице, раньше мы должны были использовать JQuery. Но CSS3 и тут нам облегчил задачу, т.к. теперь мы можем обойтись без скриптов. Вот в этом материале давайте и поговорим о том, как анимировать элемент на странице с помощью CSS3.

Анимации задаются по ключевым кадрам. Давайте их и создадим.

@keyframes spin {
  0% {
   здесь код
  }
  100% {
   здесь код
  }
}

Мы можем написать так:

@keyframes spin {
  from {
   здесь код
  }
  to {
   здесь код
  }
}

Это абсолютно тоже самое.

Чтобы создать ключевые кадры, мы должны написать @keyframes, а затем указать какое-нибудь имя. В фигурных скобках мы указываем свойства, которые хотим анимировать на определённой стадии анимации. Конечно, значения могут быть не обязательно 0% или 100%. Мы также можем задать и промежуточные значения.

@keyframes spin {
  0% {
   здесь код
  }
  25% {
   здесь код
  }
  100% {
   здесь код
  }
}

Если в разный промежуток времени у нас должно происходить одно и то же, мы можем написать эти промежутки через запятую:

@keyframes spin {
  0% {
   здесь код
  }
  25%, 50% {
   здесь код, который будет выполняться в промежутках 25% и 50%
  }
  100% {
   здесь код
  }
}

Давайте дальше смотреть уже на примере.

Создадим HTML разметку

<html>
<head>
  <title>Animation</title>
  <meta charset="utf-8">
</head>
<body>
  <div class="block"></div>
</body>
</html>

Теперь напишем стили

@keyframes spin {
  0% {
   transform: rotate(0deg);
  }
  100% {
   transform: rotate(360deg);
  }
}

.block {
  animation-name: spin;
  animation-duration: 2s;
  animation-timing-function: linear;
  animation-delay: 1s;
}

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

В animation-name мы указываем имя нашей анимации, то самое, что мы указали после ключевого слова @keyframes.

В animation-duration мы указываем продолжительность нашей анимации. В нашем случае 2 секунды.

О свойствах animation-timing-function и animation-delay мы говорили в статье про плавные переходы, поэтому повторяться не будем.

Чтобы наш блок повернулся 2 раза, нужно указать свойство animation-iteration-count

animation-iteration-count: 2;

Если вам нужно, чтобы анимация работала вечно, укажите значение infinite

animation-iteration-count: infinite;

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

animation-direction: reversed;

А если мы хотим, чтобы наша анимация первую итерацию делала нормально, а вторую в обратном направлении, нужно указать:

animation-direction: alternate;

Сделаем, чтобы при наведении на наш блок, анимация останавливалась. За это отвечает свойство animation-play-state со значением paused.

.block:hover {
  animation-play-state: paused;
}

В конце приведу короткую запись

.block {
  animation: spin 2s linear 1s infinite alternate;
}

На этом всё! Как видите, анимация - вещь классная, а используя её со всем тем, что мы изучили в прошлых статьях, можно добиться потрясающих результатов! Так что, удачи в эксперементах ;)