CSS3 анимация — вдохновение для веб-разработчиков. С ее помощью можно создавать эффекты, которые раньше воспроизводились с помощью скрипта и с использованием графических редакторов.
Анимация применяется к любым html-элементам, а также к псевдоэлементам :before и :after. Список свойств, которые можно анимировать, приведен здесьСоздание анимации в CSS3 — увлекательный процесс. С помощью несложных манипуляций и, главное, без использования скриптов, можно перемещать и скрывать html-элементы, изменять их размеры, цвет, создавать реалистичные объемные эффекты, анимируя тень элемента, и многое другое.
1. Правило @keyframes
CSS3-анимация состоит из двух компонентов: сначала идет объявление@keyframes, которое затем используется в свойстве animation элемента. Правило @keyframes позволяет создавать анимацию с помощью ключевых кадров — состояний объекта в определенный момент времени. Ключевые кадры анимации создаются с помощью ключевых слов from и to (эквивалентны значениям 0% и 100%) или с помощью процентных пунктов, которых можно задавать сколько угодно. Также можно комбинировать ключевые слова и процентные пункты. Если 0% или 100% кадры не указаны, то браузер пользователя создает их, используя вычисляемые (первоначально заданные) значения анимируемого свойства. Если у двух ключевых кадров будут одинаковые селекторы, то последующий отменит действие предыдущего.
Синтаксис
@-webkit-keyframes shadow { from {text-shadow: 0 0 3px black;} 50% {text-shadow: 0 0 30px black;} to {text-shadow: 0 0 3px black;} } @keyframes shadow { from {text-shadow: 0 0 3px black;} 50% {text-shadow: 0 0 30px black;} to {text-shadow: 0 0 3px black;} }
Теперь, объявив @keyframes, мы можем ссылаться на него в свойстве animation:
h1 { font-size: 3.5em; color: darkmagenta; -webkit-animation: shadow 2s infinite ease-in-out; animation: shadow 2s infinite ease-in-out; }
2. Название анимации
Свойство animation-name задает имя анимации. Рекомендуется использовать название, отражающее суть анимации, при этом можно использовать одно слово или несколько, связанных между собой при помощи пробела - или нижнего подчеркивания _.Синтаксис
div { -webkit-animation-name: mymove; animation-name: mymove; }
3. Длительность анимации
Свойство устанавливает длительность анимации, например:
animation-duration: 1s;.Не наследуется.
animation-duration | |
---|---|
Значения: | |
время (s / ms) | Длительность анимации задается в секундах или миллисекундах. |
inherit | Наследует это свойство от родительского элемента. |
Синтаксис
div { -webkit-animation-duration: 2s; animation-duration: 2s; }
4. Временная функция
Свойство определяет изменение скорости от начала до конца анимации с помощью временных функций. Задается при помощи ключевых слов или кривой Безье cubic-bezier(x1, y1, x2, y2). Не наследуется.
animation-timing-function | |
---|---|
Значения: | |
ease | Функция по умолчанию, анимация начинается медленно, разгоняется быстро и замедляется в конце. Соответствует cubic-bezier(0.25,0.1,0.25,1). |
linear | Анимация происходит равномерно на протяжении всего времени, без колебаний в скорости. Соответствует cubic-bezier(0,0,1,1). |
ease-in | Анимация начинается медленно, а затем плавно ускоряется в конце. Соответствует cubic-bezier(0.42,0,1,1). |
ease-out | Анимация начинается быстро и плавно замедляется в конце. Соответствует cubic-bezier(0,0,0.58,1). |
ease-in-out | Анимация медленно начинается и медленно заканчивается. Соответствует cubic-bezier(0.42,0,0.58,1). |
cubic-bezier(x1, y1, x2, y2) | Позволяет вручную установить значения от 0 до 1.На этом сайте вы сможете построить любую траекторию скорости изменения анимации. |
inherit | Наследует это свойство от родительского элемента. |
Синтаксис
div { -webkit-animation-timing-function: linear; animation-timing-function: linear; }
-
ease / linear / ease-in / ease-out / ease-in-out / cubic-bezier()
5. Анимация с задержкой
Свойство игнорирует анимацию заданное количество времени, что дает возможность по отдельности запускать каждую анимацию. Отрицательная задержка начинает анимацию с определенного момента внутри её цикла, т.е. со времени, указанного в задержке. Это позволяет применять анимацию к нескольким элементам со сдвигом фазы, изменяя лишь время задержки. Если вы хотите, чтобы анимация началась с середины, задайте отрицательную задержку, равную половине времени, установленном в animation-duration. Не наследуется.
animation-delay | |
---|---|
Значения: | |
время (s / ms) | Длительность анимации задается в секундах или миллисекундах. |
inherit | Наследует это свойство от родительского элемента. |
Синтаксис
div { -webkit-animation-delay: 2s; animation-delay: 2s; }
Пример
6. Повтор анимации
Свойство позволяет запустить анимацию несколько раз. Значение 0 или любое отрицательное число удаляют анимацию из проигрывания. Не наследуется.
animation-iteration-count | |
---|---|
Значения: | |
число | С помощью целого числа задается количество повторов анимации. |
infinite | Анимация проигрывается бесконечно. |
inherit | Наследует это свойство от родительского элемента. |
Синтаксис
div { -webkit-animation-iteration-count: 3; animation-iteration-count: 3; }
7. Направление анимации
Свойство задает направление повтора анимации. Если анимация повторяется только один раз, то это свойство не имеет смысла. Не наследуется.
animation-direction | |
---|---|
Значения: | |
alternate | Анимация проигрывается с начала до конца, затем в обратном направлении. |
alternate-reverse | Анимация проигрывается с конца до начала, затем в обратном направлении. |
normal | Значение по умолчанию, анимация проигрывается в обычном направлении, с начала и до конца. |
reverse | Анимация проигрывается с конца. |
inherit | Наследует это свойство от родительского элемента. |
Синтаксис
div { -webkit-animation-direction: alternate; animation-direction: alternate; }
8. Краткая запись анимации
Все параметры воспроизведения анимации можно объединить в одном свойстве — animation, перечислив их через пробел:
animation: animation-name animation-duration animation-timing-function animation-delay animation-iteration-count animation-direction;
9. Проигрывание анимации
Свойство позволяет управлять проигрыванием и остановкой анимации. Остановка анимации внутри цикла возможна через использование этого свойства в скрипте (JavaScript). Также можно останавливать анимацию при наведении курсором мыши на объект. Состояние :hover, например:
h1:hover {animation-play-state: paused;}Не наследуется.
animation-play-state | |
---|---|
Значения: | |
paused | Останавливает анимацию. |
running | Значение по умолчанию, означает проигрывание анимации. |
inherit | Наследует это свойство от родительского элемента. |
Синтаксис
div:hover { -webkit-animation-play-state: paused; animation-play-state: paused; }
10. Состояние элемента до и после воспроизведения анимации
Свойство определяет порядок применения определенных в @keyframes стилей к объекту. Не наследуется.
animation-fill-mode | |
---|---|
Значения: | |
none | Значение по умолчанию. Состояние элемента не меняется до или после воспроизведения анимации. |
forwards | Воспроизводит анимацию до последнего кадра по окончанию последнего повтора и не отматывает ее к первоначальному состоянию. |
backwards | Возвращает состояние элемента после загрузки страницы к первому кадру, даже если установлена задержка animation-delay, и оставляет его там, пока не начнется анимация. |
both | Позволяет оставлять элемент в первом ключевом кадре до начала анимации (игнорируя положительное значение задержки) и задерживать на последнем кадре до конца последней анимации. |
inherit | Наследует это свойство от родительского элемента. |
Синтаксис
div { -webkit-animation-fill-mode: forwards; animation-fill-mode: forwards; }
11. Множественные анимации
Для одного элемента можно задавать несколько анимаций, перечислив их названия через запятую:
div {animation: shadow 1s ease-in-out 0.5s alternate, move 5s linear 2s;}
Поддержа браузерами
IE: 10.0
Firefox: 5.0 -moz-
Chrome: 4.0 -webkit-
Safari: 4.0 -webkit-
Opera: 12.0 -o-
iOS Safari: 7.1 -webkit-
Opera Mini: —
Android Browser: 4.1 -webkit-
Chrome for Android: 44