CSS Анімації
CSS Анімації
CSS дозволяє зробити анімацію HTML-елементів без використання JavaScript або Flash!
В цьому розділі ви дізнаєтесь про наступні властивості:
@keyframes
animation-name
animation-duration
animation-delay
animation-iteration-count
animation-direction
animation-timing-function
animation-fill-mode
animation
Браузерна підтримка анімації
Числа в таблиці вказують першу версію браузера, яка повністю підтримує властивість.
Властивість | |||||
---|---|---|---|---|---|
@keyframes | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-name | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-duration | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-delay | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-iteration-count | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-direction | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-timing-function | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-fill-mode | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
Що таке CSS анімація?
Анімація дозволяє елементу поступово переходити від одного стилю до іншого.
Ви можете змінити стільки CSS властивостей, скільки хочете, і стільки разів, скільки хочете.
Щоб використовувати CSS-анімацію, спочатку необхідно вказати кілька ключових кадрів для анімації.
Ключові кадри містять стилі, які елемент буде мати у визначений час.
Правило @keyframes (ключові кадри)
Коли ви задаєте CSS стилі всередині правила @keyframes
анімація поступово зміниться з поточного стилю на новий стиль у визначені моменти часу.
Щоб анімація працювала, ви повинні прив’язати її до елементу.
В наступному прикладі анімація "example" зв’язується з елементом <div>
. Анімація буде тривати 4 секунди та поступово змінить колір фону елемента <div>
з червоного - "red" на жовтий - "yellow":
Приклад
/* Код анімації */
@keyframes example {
from {background-color: red;}
to {background-color: yellow;}
}
/* Елемент, до якого застосовується анімація */
div {
width: 100px;
height: 100px;
background-color: red;
animation-name: example;
animation-duration: 4s;
}
Спробуйте самі »
Примітка: Властивість animation-duration
властивість визначає, скільки часу анімація має зайняти для завершення. Якщо властивість animation-duration
не вказано, анімація не буде виконуватись, оскільки значення за замовчуванням дорівнює 0s (0 секунд).
В наведеному вище прикладі ми вказали, коли стиль зміниться, використовуючи ключові слова "від" і "до" (що відповідає 0% (початок) і 100% (завершення)).
Також можна використовувати проценти. Використовуючи проценти, ви можете додавати стільки стилів, скільки хочете.
В наступному прикладі буде змінено колір фону елемента <div>
, коли анімація завершена на 25%, завершена на 50% и снова, коли анімація завершена на 100%:
Приклад
/* Код анімації */
@keyframes example {
0% {background-color: red;}
25% {background-color: yellow;}
50% {background-color: blue;}
100% {background-color: green;}
}
/* Елемент, до якого застосовується анімація */
div {
width: 100px;
height: 100px;
background-color: red;
animation-name: example;
animation-duration: 4s;
}
Спробуйте самі »
Наступний приклад змінить колір фону і положення елемента <div>
, коли анімація завершена на 25%, завершена на 50%, і знову, коли анімація завершена на 100%:
Приклад
/* Код анімації */
@keyframes example {
0% {background-color:red; left:0px; top:0px;}
25% {background-color:yellow; left:200px; top:0px;}
50% {background-color:blue; left:200px; top:200px;}
75% {background-color:green; left:0px; top:200px;}
100% {background-color:red; left:0px; top:0px;}
}
/* Елемент, до якого застосовується анімація */
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
}
Спробуйте самі »
Затримка анімації
Властивість animation-delay
вказує затримку початку анімації.
В наступному прикладі перед запуском анімація затримується на 2 секунди:
Приклад
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
animation-delay: 2s;
}
Спробуйте самі »
Негативні значення також допускаються. При використанні негативних значень анімація почнеться так, як би вона вже відтворювалась протягом N секунд.
В наступному прикладі анімація запуститься так, як би вона вже відтворювалась протягом 2 секунд:
Приклад
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
animation-delay: -2s;
}
Спробуйте самі »
Встановіть, скільки разів анімація має запускатися
Властивість animation-iteration-count
вказує, скільки разів анімація має запускатися.
В наступному прикладі анімація буде запущена 3 рази до її зупинки:
Приклад
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
animation-iteration-count: 3;
}
Спробуйте самі »
В наступному прикладі використовується значення "infinite" (безкінечно), щоб анімація тривала постійно:
Приклад
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
animation-iteration-count: infinite;
}
Спробуйте самі »
Запустіть анімацію в зворотньому напрямку або альтернативних циклах
Властивість animation-direction
вказує, чи слід відтворювати анімацію вперед, назад або в циклах, що змінюються.
Властивість animation-direction може мати наступні значення:
normal
- Анімація відтворюється як завжди (вперед). Це за замовчуваннямreverse
- Анімація відтворюється в зворотньому напрямку (назад)alternate
- Спочатку анімація відтворюється вперед, потім назадalternate-reverse
- Спочатку анімація відтворюється в зворотньому напрямку, потім вперед
В наступному прикладі анімація буде запущена в зворотньому напрямку (назад):
Приклад
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
animation-direction: reverse;
}
Спробуйте самі »
В наступному прикладі використовується значення "alternate", щоб спочатку запустити анімацію вперед, а потім назад:
Приклад
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
animation-iteration-count: 2;
animation-direction: alternate;
}
Спробуйте самі »
В наступному прикладі використовується значення "alternate-reverse", щоб спочатку запустити анімацію назад, а потім вперед:
Приклад
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
animation-iteration-count: 2;
animation-direction: alternate-reverse;
}
Спробуйте самі »
Вкажіть криву швидкості анімації
Властивість animation-timing-function
задає криву швидкості анімації.
Властивість animation-timer-function може мати наступні значення:
ease
- Визначає анімацію з повільним початком, потім швидким, а потім повільним завершенням (за замовчуванням)linear
- Визначає анімацію з однаковою швидкістю від початку до кінцяease-in
- Визначає анімацію з повільним початкомease-out
- Визначає анімацію з повільним закінченнямease-in-out
- Визначає анімацію з повільним початком та закінченнямcubic-bezier(n,n,n,n)
- Дозволяє визначити свої власні значення в функції кубічного Без’є
В наступному прикладі показані деякі з різних кривих швидкості, які можна використовувати:
Приклад
#div1 {animation-timing-function: linear;}
#div2 {animation-timing-function: ease;}
#div3 {animation-timing-function: ease-in;}
#div4 {animation-timing-function: ease-out;}
#div5 {animation-timing-function: ease-in-out;}
Спробуйте самі »
Вкажіть режим заповнення для анімації
CSS-анімація не впливає на елемент перед відтворенням першого ключового кадру або після відтворення останнього ключового кадру. Властивість animation-fill-mode
може перевизначити цю поведінку.
Властивість animation-fill-mode
визначає стиль для цільового елемента, коли анімація не відтворюється (до її запуску, після її завершення або в обох випадках).
Властивість animation-fill-mode
може мати наступні значення:
none
- Значення за замовчуванням. Анімація не буде застосовувати які-небудь стилі до елементу до або після його виконанняforwards
- Елемент збереже значення стилю, встановлені останнім ключовим кадром - залежить від animation-direction (направлення анімації) та animation-iteration-count (ітеративного підрахунку анімації)backwards
- Елемент отримає значення стилю, задані першим ключовим кадром - залежить від animation-direction (направлення анімації), та збереже його протягом періоду animation-delay (затримки анімації)both
- Анімація буде слідувати правилам як вперед, так і назад, розширюючи властивості анімації в обох напрямках.
В наступному прикладі елемент <div>
зберігає значення стилю з останнього ключового кадра після закінчення анімації:
Приклад
div {
width: 100px;
height: 100px;
background: red;
position: relative;
animation-name: example;
animation-duration: 3s;
animation-fill-mode: forwards;
}
Спробуйте самі »
В наступному прикладі елемент <div>
отримує значення стилю, встановлені першим ключовим кадром, до початку анімації (протягом періоду затримки анімації):
Приклад
div {
width: 100px;
height: 100px;
background: red;
position: relative;
animation-name: example;
animation-duration: 3s;
animation-delay: 2s;
animation-fill-mode: backwards;
}
Спробуйте самі »
В наступному прикладі елемент <div>
отримує значення стилю, встановлені першим ключовим кадром до початку анімації, і зберігає значення стилю з останнього ключового кадру після завершення анімації:
Приклад
div {
width: 100px;
height: 100px;
background: red;
position: relative;
animation-name: example;
animation-duration: 3s;
animation-delay: 2s;
animation-fill-mode: both;
}
Спробуйте самі »
Скорочені властивості анімації
В наведеному нижче прикладі використовуються шість властивостей анімації:
Приклад
div {
animation-name: example;
animation-duration: 5s;
animation-timing-function: linear;
animation-delay: 2s;
animation-iteration-count: infinite;
animation-direction: alternate;
}
Спробуйте самі »
Той же ефект анімації, що і вище, може бути досягнутий за допомогою скороченої властивості animation
:
Перевірте себе за допомогою вправ!
CSS Властивості анімації
В наступній таблиці перераховані правила @keyframes та всі властивості CSS-анімації:
Властивість | Опис |
---|---|
@keyframes | Визначає код анімації |
animation | Скорочена властивість для встановлення всіх властивостей анімації |
animation-delay | Визначає затримку початку анімації |
animation-direction | Визначає, чи повинна анімація відтворюватись вперед, назад або почергово |
animation-duration | Визначає, скільки часу анімація повинна зайняти для завершення одного циклу |
animation-fill-mode | Визначає стиль для елемента, коли анімація не відтворюється (до її початку, після її завершення або і того, й іншого) |
animation-iteration-count | Визначає, скільки разів анімація має відтворюватись |
animation-name | Визначає ім’я анімації @keyframes |
animation-play-state | Визначає, чи запущена анімація або призупинена |
animation-timing-function | Визначає криву швидкості анімації |