HTML + CSS
  • 🧑‍💻Full-Stack Web Developer
  • ‼️Список корисних ресурсів
  • 📚Теорія
    • 1️⃣HTML
      • Введення в веб-розробку
      • Теги та атрибути
      • Скелет документа HTML
      • Семантика
      • Розмітка тексту
      • Розмітка тексту (2 частина)
      • Зображення
      • Структура HTML-документа
      • Таблиці
      • Символьні підстановки
      • Таблиця кодів символів
      • Відео та аудіо
      • Інструменти розробника
      • Валідація
    • 2️⃣CSS та селектори
      • CSS
      • Селектори
      • Псевдокласи стану
      • Колір
      • Каскад стилів
      • CSS-змінні
      • Одиниці вимірювання
      • Стилізація тексту
      • Властивості шрифту
      • Псевдоелементи тексту
      • Підключення сторонніх шрифтів
    • 3️⃣Блокова модель
      • Основи блокової моделі
      • Геометрія елемента
      • Типи елементів
      • Структурні псевдокласи
    • 4️⃣Flexbox
      • Концепції
      • Властивості контейнера
      • Властивості елемента
    • 5️⃣Grid
    • 6️⃣Зображення і декор
      • Типи зображень
      • Фон елемента
      • Властивості object-fit і object-position
      • Псевдоелементи
      • Градієнт
      • Тінь елемента
    • 7️⃣Векторна графіка
      • Що таке векторна графіка
      • SVG-елементи
      • SVG-документ
      • Використання векторної графіки
      • Зміна властивостей в SVG
    • 8️⃣Позиціонування
      • Позиційовані елементи
      • Властивість z-index
      • Властивість overflow
    • 9️⃣Переходи і анімація
      • CSS-переходи
      • CSS-анімація
      • 2D-трансформації
      • Перспектива
    • 🔟Форми
      • Для чого потрібні форми
      • Елемент <form>
      • Елемент <label>
      • Елемент <input>
      • Елемент <textarea>
      • Елемент <select>
      • Елемент <datalist>
      • Групування полів
      • Валідація форм
      • Валідація на клієнті
      • Псевдокласи стану
    • 🐭Адаптивна верстка
      • Медіа-запити
      • Метатег viewport
      • Інструменти розробника для адаптивної та респонсивної верстки
      • Типи верстки
      • Стратегія Mobile First
      • Вендорні префікси
      • Налаштування теми
    • 🐹Адаптивна графіка
      • Щільність пікселів
      • Респонсивні зображення
      • Респонсивні фонові зображення
      • Респонсивний елемент <img>
      • Елемент <picture>
    • 🦁Методологія ВЕМ
    • 🐶Препроцесор SASS
    • 🐰CSS фреймворки
      • Що таке CSS фреймворки
  • 👷‍♂️Практика
    • 👷Практика
  • Про мене
    • Про мене
Powered by GitBook
On this page
  • Властивість transition-property
  • Властивість transition-duration
  • Властивість transition-timing-function
  • Функція Cubic-Bezier
  • Властивість transition-delay
  • Короткий запис CSS-переходу
  • Сценарії з transition-delay
  1. Теорія
  2. Переходи і анімація

CSS-переходи

PreviousПереходи і анімаціяNextCSS-анімація

Last updated 1 year ago

CSS-переходи (transitions) - це механізм, який дозволяє плавно змінювати стилі елементів під час зміни їх стану. Наприклад, коли користувач наводить курсор миші на елемент, можна змінювати його кольори, розміри або інші властивості плавно, замість миттєвого змінювання стилів.

У CSS-переходах є всього два стани: початкове і кінцеве значення властивості. Для складніших ефектів використовують CSS-анімацію.

CSS-переходами керують за допомогою таких властивостей:

transition-property: властивість_пеерходу;
transition-duration: тривалість_переходу; 
transition-timing-function: часова_функція_переходу;
transition-delay: тривалість_затримки;

Властивість transition-property

Властивість transition-property вказує, яка властивість або властивості повинні бути анімовані (переходити плавно) під час зміни стану елемента. Ця властивість дозволяє контролювати, які атрибути елемента повинні бути анімовані при спрацьовуванні подій, таких як наведення курсору чи зміна фокусу.

Значенням може бути одна властивість або список властивостей через кому. За замовчуванням значення all - будуть анімовані всі можливі властивості.

transition-property: property1, property2 ...;

тут property1, property2, ... - назви властивостей CSS, які повинні бути анімовані.

Наприклад, якщо треба анімувати зміну кольору тла (background-color) та розмір (width) елемента при наведенні курсору.

Властивість transition-duration

Властивість transition-duration вказує тривалість часу, протягом якого повинна відбутися анімація зміни стилів властивостей, які були задані за допомогою властивості transition-property. Ця властивість вказує, скільки часу потрібно для зміни стану властивостей з їх поточних значень на нові значення. Якщо цю властивість не вказано, то перехід відбувається миттєво. Значення можна задавати у мілісекундах: 250ms, 3000ms або в секундах: : 0.25s, 3s.

transition-duration: time;

тут time - тривалість анімації в секундах (s) або мілісекундах (ms).

Якщо різні властивості мають різні значення часу переходу, то їх треба перерахувати через кому.

Зазвичай комфортний час переходу для сприйняття людиною - 250ms. Орієнтуйтейсь приблизно на такий час при налаштуванні переходів кольору чи розміру скажімо для кнопок.

Властивість transition-timing-function

Властивість transition-timing-function визначає графік, за яким анімація переходу відбувається від початкового значення до кінцевого значення. Ця властивість дозволяє вказати, яким чином зміни значень властивостей будуть плавно відбуватися протягом періоду, вказаного за допомогою transition-duration.

Існує декілька можливих значень для властивості transition-timing-function:

  1. ease (за замовчуванням): Починає повільно, збільшує швидкість посередині анімації та повільно сповільнює в кінці. Це забезпечує плавний і природний ефект анімації.

  2. linear: Анімація відбувається зі сталою швидкістю протягом всього періоду.

  3. ease-in: Анімація починається повільно та збільшує швидкість в кінці.

  4. ease-out: Анімація починається швидко та сповільнюється в кінці.

  5. ease-in-out: Анімація починається повільно, збільшує швидкість всередині та сповільнюється в кінці.

  6. cubic-bezier(n,n,n,n): Дозволяє визначити власну криву таймінгу за допомогою значень n, які лежать в діапазоні від 0 до 1.

.element {
  width: 200px;
  height: 200px;
  background-color: #3498db;
  color: white;
  text-align: center;
  line-height: 200px;
  transition-property: background-color, width;
  transition-duration: 0.5s;
  transition-timing-function: cubic-bezier(0.25, 0.1, 0.25, 1); /* Власна крива таймінгу */
}

.element:hover {
  background-color: #e74c3c;
  width: 300px;
}

Функція Cubic-Bezier

Властивість transition-delay

Властивість transition-delay визначає часовий інтервал перед початком виконання анімації зміни стилів, яку ви встановили за допомогою властивостей transition-property, transition-duration, та transition-timing-function.

transition-delay: time;

тут time - тривалість затримки вказується в секундах (s) або мілісекундах (ms).

Короткий запис CSS-переходу

Короткий запис CSS-переходу (CSS transition shorthand) дозволяє встановлювати одразу всі параметри переходу за допомогою однієї властивості transition. Це спрощує і покращує читабельність коду, оскільки всі параметри переходу розміщуються в одному місці.

transition: property duration timing-function delay;

property: Властивість чи властивості CSS, які повинні бути анімовані.

duration: Тривалість анімації вказується в секундах (s) або мілісекундах (ms).

timing-function: Функція плавності анімації.

delay: Затримка перед початком анімації, вказується в секундах (s) або мілісекундах (ms).

Можна зазначити більше однієї властивості анімації, розділяючи їх комами:

transition: property1 duration1 timing-function1 delay1, 
            property2 duration2 timing-function2 delay2;

Функцію плавності анімації та затримку можна не вказувати, тоді їх значення будуть застосовані за замовчанням.

transition: background-color 500ms ease-in, border-radius 500ms ease-out;

Сценарії з transition-delay

transition-delay використовується для встановлення затримки перед початком анімації для властивостей, які вказані в transition-property. Ця властивість може бути корисною для створення послідовних анімацій, коли треба, щоб різні властивості анімувалися з різними затримками.

 transition: background-color 0.5s ease 0s, 
             color 0.5s ease 0.5s, 
             border-radius 0.5s ease 1s;

Покликання:

в майбутньому може змінитися. Потрібно обов'язково зазначати властивості, які треба анімувати. Якшо цього не зробити, то будуть проанімовані усі властивості елемента.

За допомогою можна описати кастомну швидкість переходу властивості від одного значення до іншого.

Є багато видів функцій розподілу часу базованих на функціях Безьє. Для охочих дізнатися про них більше можна .

📚
9️⃣
Список властивостей, які можуть бути анімовані
функції розподілу часу Cubic-Bezier
почитати тут
Функція розподілу часу cubic-bezier
Трохи теорії про функцію Cubic-Bezier
Дуже крутий гайд про переходи із прикладами