CSS3 анимация в современных браузерах

CSS анимация - это плавное изменение одного и/или более свойств элемента по математической функции. Обычно анимации делаются на JS через функции setInterval и setTimeout, любители jQuery используют функцию animate, особо сложные эффекты делаются на flash, но это было раньше.

CSS анимация поддерживается современными браузерами, а на мобильных платформах их использование даже желательно так, как они меньше нагружают процессор нежели JS или flash решения.

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

@keyframes - ключевые кадры анимации

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

@keyframes moveAnimation{

  from{

    top: 0px;

  }

  to{

  top: 100px;

  }

}

Запустить пример

Для задания кадров используется процентная запись, 0% - начало анимации, 10% - в этот момент времени пройдет 10% анимации. Так же можно использовать ключевые слова from(0%) и to(100%).

Свойство animation - присваиваем анимацию элементу

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

animation: name duration timing-function delay iteration-count direction

name - имя анимации берется из @keyframes. По умолчанию none.

duration - продолжительность анимации. В секундах(s) или миллисекундах(ms). По умолчанию 0.

timing-function - функция по которой рассчитывается значение анимации между кадрами. По умолчанию ease.

delay - задержка перед началом анимации. В секундах(s) или миллисекундах(ms). По умолчанию 0.

iteration-count - количество проигрываний анимации. По умолчанию 1.

direction - определяет движение анимации. Normal - анимация движется только в прямом направлении, alternate - анимация движется в обратном направлении в четные разы проигрывания анимации. По умолчанию normal.

Для указания конкретного свойства анимации можно использовать более длинные версии свойств: animation-name, animation-duration - и другие из примера выше думаю понятно. Только одно свойство необходимо задавать отдельно animation-play-state.

animation-play-state: paused | running

Позволяет остановить(paused) и запустить(running) анимацию.

Поддержка браузерами CSS анимаций

IEFirefoxChromeSafariOperaiOS SafariOpera MiniAndroid BrowserBlackberry Browser
2.1-webkit-
2.2-webkit-
3.2-webkit- 2.3-webkit-
7.0 4.0-4.1-webkit- 3.0-webkit-
8.0 16.0 4.2-4.3-webkit- 4.0-webkit-
9.0 17.0 23.0-webkit- 5.1-webkit- 5.0-5.1-webkit- 4.1-webkit-
Current 10.0 18.0 24.0-webkit- 6.0-webkit- 12.1 6.0-webkit- 5.0-7.0 4.2-webkit- 7.0-webkit-
Near future 19.0 25.0-webkit- 12.5 10.0-webkit-
Farther future 20.0 26.0-webkit-

Для старых версий браузеров стоит использовать вендорные префиксы -o-, -moz-, -webkit-.

За таблицу совместимости хочу сказать спасибо сайту caniuse.com.

Пример анимации

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

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

Из-за большого количества свойств с вендорными префиксами придется копировать одну и ту же запись 4 раза, что увеличит файл стилей, а так же нет удобного управления состоянием анимации. Наиболее удачное применение css анимаций - hover-эффекты для портфолио.

Полезно:

Делимся: