Анимация на 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;
}
На этом всё! Как видите, анимация - вещь классная, а используя её со всем тем, что мы изучили в прошлых статьях, можно добиться потрясающих результатов! Так что, удачи в эксперементах ;)
-
- Михаил Русаков
Комментарии (4):
Как и предыдущий урок (transform), в гуглохроме не работает
Ответить
Добавьте префиксы(-webkit- для браузеров, основанных на этом движке)
Ответить
<html> <head> <meta Charset="UTF-8"> <title>СПАСИБО</title> </head> <body> <h1>Благодарю</h1> </body> </html>
Ответить
Спасибо за уроки! Классный сайт. Мне понравилось. В опере windows8 работает.
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.