Практичні завдання для самостійного вивчення CSS/JS/JQuary.
Любомир Іваницький


CSS-анімації

За допомогою CSS-анімації можна створювати ефекти, які будуть автоматично запускатися і повторюватися в заданому проміжку часу.

Ми будемо оперувати такими властивостями:
1.Властивості анімації – описують дії анімації.
2.Ключові кадри - keyframes – описують стилі елемента анімації в різні проміжки часу.


1.Властивості анімації Є вісім властивостей animation (в алфавітному порядку):
- animation-delay – задає затримку перед початком анімації, в секундах
-animation-direction – вказує на те, чи повинна анімація відтворюватися в зворотному або чергованому циклах (reverse або alternate)
-animation-duration – визначає те, скільки секунд або мілісекунд потрібно анімації для завершення одного циклу
-animation-fill-mode – стиль для елемента, коли анімація не відтворюється. Наприклад, коли анімація завершилася або у неї задана затримка
-animation-iteration-count – задає кількість разів, яку має відтворюватися анімація (infinite – для нескінченної кількості разів)
-animation-name – визначає ім’я @keyframes анімації
-animation-play-state – вказує на те, чи запущена анімація або припинена (running або paused)
-animation-timing-function – визначає криву швидкості анімації

Приклад запису властивості анімації:
div {animation: nazva-animaciyi 1.5s ease-out 0s alternate infinite none running;}
Властивості анімації в порядку їх виконання, без розділових знаків.


2.Ключові кадри - keyframes Зразок синтаксису ключових кадрів @keyframes виглядає так:
@keyframes [назва анімації] {
  0% {/* початковий кадр */
    [властивість CSS]: [значення властивості];
  }
  100% {/* фінальний кадр */
    [властивість CSS]: [значення властивості];
  }
}
Одному елементу можна присвоїти кілька різних ключових кадрів, тоді між властивостями ставиться кома.
3.Тривалість анімації: animation-duration
Властивість animation-duration визначає тривалість одного циклу анімації. Задається в секундах s або мілісекундах ms.
Завдання 1.Скопіюйте даний нижче код до свого файлу. Придивіться скільки тут кадрів? Де опис кадрів? Де опис анімації?
.puls_kolo{
  background-color: red;
  border-radius: 50%;
  height: 250px;
  width: 250px;
  margin: 50px;
  animation: pulsuvannya 2s ease infinite;
}

 @keyframes pulsuvannya {

  0% {
    transform: scale (1);
  } 

  50% {
    transform: scale (1.3);
  }

  100% {
    transform: scale (1);
  }

}

Завдання 2.Змініть коло на серце. Опис CSS візьміть із Довідника фігур
Змініть анімацію на поворот.

Завдання 3. Нафантазуйте щось таке :)

4.Тимчасова функція: animation-timing-function
Властивість animation-timing-function описує, як буде розвиватися анімація між кожною парою ключових кадрів.

значення:
linear Лінійна функція, анімація відбувається рівномірно протягом усього часу, без коливань в швидкості.
функції Безьє ease анімація починається повільно, розганяється швидко і сповільнюється в кінці. Відповідає cubic-bezier (0.25,0.1,0.25,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.

step-start Задає покрокову анімацію, розбиваючи анімацію на відрізки, зміни відбуваються на початку кожного кроку. Обчислюється в steps (1, start).
step-end Покрокова анімація, зміни відбуваються в кінці кожного кроку. Обчислюється в steps (1, end).
steps (кількість кроків, положення кроку) Ступенева тимчасова функція, яка приймає два параметри. Перший параметр вказує кількість інтервалів в функції. Це повинно бути позитивне ціле число більше 0, якщо другим параметром не є jump-none - в цьому випадку воно повинно бути позитивним цілим числом більше 1. Другий параметр, який є необов'язковим, вказує позицію кроку - момент, в якому починається анімація, використовуючи одне з наступних значень:

jump-start - перший крок відбувається при значенні 0
jump-end - останній крок відбувається при значенні 1
jump-none - всі кроки відбуваються в межах діапазону (0, 1)
jump-both - перший крок відбувається при значенні 0, останній - при значенні 1
start - поводиться як jump-start
end - поводиться як jump-end
Зі значенням start анімація починається на початку кожного кроку, зі значенням end - в кінці кожного кроку з затримкою. Затримка обчислюється як результат ділення часу анімації на кількість кроків. Якщо другий параметр не вказано, використовується значення за замовчуванням end.

initial Встановлює значення властивості в значення за замовчуванням.
inherit Успадковує значення властивості від батьківського елемента. синтаксис

Завдання 4. Використайте вказані види анімації до блоку з текстом. За допомогою які створюють цікаві ефекти, наприклад, друкується текст або індикатор завантаження.
animation-timing-function: ease;
animation-timing-function: ease-in;
animation-timing-function: ease-out;
animation-timing-function: ease-in-out;
animation-timing-function: linear;
animation-timing-function: step-start;
animation-timing-function: step-end;
animation-timing-function: cubic-bezier (0.1, 0.7, 1.0, 0.1);
animation-timing-function: steps (4, end);
animation-timing-function: ease, step-start, cubic-bezier (0.1, 0.7, 1.0, 0.1);
animation-timing-function: initial;
animation-timing-function: inherit;