JS властивість CSSStyleDeclaration.animationTimingFunction


Загальний опис

animationTimingFunction є властивістю CSS, яка в JavaScript використовується для визначення функції таймінгу анімації для конкретного HTML-елемента. Ця властивість визначає, як анімація повинна змінювати свої значення у часі, тобто як швидкість анімації буде змінюватися протягом її тривалості. Основна корисність цієї властивості полягає у можливості керувати плавністю та ритмом анімаційних ефектів, що значно покращує користувацький досвід на веб-сторінках.

Функція таймінгу може мати кілька стандартних значень, таких як linear, ease, ease-in, ease-out, ease-in-out, а також може бути задана за допомогою кубічних безьєр-кривих (cubic-bezier()) або крокових функцій (steps()). Властивість animationTimingFunction дозволяє розробникам точно контролювати, як анімація прискорюється або уповільнюється протягом свого циклу.

Розглянемо базовий приклад використання animationTimingFunction. Припустимо, ми маємо HTML-елемент з id "box":

<div id="box"></div>

У CSS визначено анімацію для цього елемента:

@keyframes move {
  0% { transform: translateX(0); }
  100% { transform: translateX(100px); }
}

#box {
  width: 100px;
  height: 100px;
  background-color: green;
  animation-name: move;
  animation-duration: 2s;
}

Тепер, використовуючи JavaScript, ми можемо встановити функцію таймінгу анімації:

var box = document.getElementById('box');
box.style.animationTimingFunction = 'ease-in';

У цьому прикладі анімація move буде починатися повільно і поступово прискорюватись завдяки функції таймінгу ease-in.

Розглянемо інший приклад з використанням кубічної безьєр-кривої для більш точного контролю над таймінгом анімації:

var box = document.getElementById('box');
box.style.animationTimingFunction = 'cubic-bezier(0.25, 0.1, 0.25, 1)';

У цьому випадку анімація буде мати унікальний ритм, заданий специфічною безьєр-кривою.

Властивість animationTimingFunction також дозволяє використовувати крокові функції для створення анімацій з різкими змінами стану. Наприклад, можна використати функцію steps() для створення анімації, що змінюється кроками:

var box = document.getElementById('box');
box.style.animationTimingFunction = 'steps(5, end)';

Тут анімація буде змінюватися в п'ять кроків, з різкими переходами на кінці кожного кроку.

Крім того, властивість animationTimingFunction можна змінювати динамічно в залежності від подій. Наприклад, зміна таймінгу при натисканні кнопки:

<button id="changeTiming">Change Timing</button>
<div id="box"></div>
var box = document.getElementById('box');
var button = document.getElementById('changeTiming');

button.addEventListener('click', function() {
  box.style.animationTimingFunction = 'ease-out';
});

У цьому прикладі при натисканні кнопки Change Timing функція таймінгу зміниться на ease-out, і анімація буде починатися швидко, а потім поступово уповільнюватись.

Ще один складніший приклад демонструє зміну таймінгу в залежності від ширини вікна браузера:

window.addEventListener('resize', function() {
  if (window.innerWidth < 600) {
    box.style.animationTimingFunction = 'ease-in-out';
  } else {
    box.style.animationTimingFunction = 'linear';
  }
});

У цьому випадку, якщо ширина вікна браузера менша за 600 пікселів, функція таймінгу буде ease-in-out, а якщо більша — linear.

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

автор: Bond

Порада

Експериментуйте з різними значеннями властивості animationTimingFunction, такими як linear, ease, ease-in-out, cubic-bezier() тощо, щоб досягти бажаного ефекту анімації. Наприклад, функція cubic-bezier(0.25, 0.1, 0.25, 1) створює плавний ефект "пружини" для анімації.

автор: Bond
Порада

Для складних анімацій розгляньте можливість використання різних функцій тайминґу для різних частин анімації. Ви можете застосувати різні функції тайминґу до різних ключових кадрів анімації за допомогою @keyframes у CSS. Це дозволить створити більш різноманітні та реалістичні ефекти анімації.

автор: Bond
Порада

Якщо ви використовуєте бібліотеку анімацій, такі як GreenSock або Anime.js, перевірте, чи підтримує вона функції тайминґу. Це може значно спростити створення складних анімацій з різними функціями тайминґу без необхідності писати весь CSS вручну.

автор: Bond

Синтаксис

element.style.animationTimingFunction

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
43 16 9 30 12 10
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
43 43 16 9

Приклади

+ запропонувати свій приклад у пісочниці

У цьому прикладі ми використовуємо element.style.animationTimingFunction для встановлення функції тайминґу для анімації елемента. Це дозволяє контролювати швидкість анімації протягом її тривалості.

HTML

<div id="myElement">Демонстраційний елемент</div>

JS

// Отримуємо елемент
const myElement = document.getElementById('myElement');

// Запускаємо анімацію з функцією тайминґу 'ease-in'
myElement.style.animationName = 'fadeIn';
myElement.style.animationTimingFunction = 'ease-in';
автор: Bond

Цей приклад демонструє, як можна використовувати element.style.animationTimingFunction для створення складних ефектів анімації з різними функціями тайминґу, поєднуючи його з іншими методами JavaScript.

HTML

<div id="animatedElement">Демонстраційний елемент</div>

JS

// Отримуємо елемент
const animatedElement = document.getElementById('animatedElement');

// Функція для зміни функції тайминґу
function changeTimingFunction() {
  const timingFunctions = ['ease', 'ease-in', 'ease-out', 'linear', 'cubic-bezier(0.68, -0.55, 0.27, 1.55)'];
  const randomIndex = Math.floor(Math.random() * timingFunctions.length);
  animatedElement.style.animationTimingFunction = timingFunctions[randomIndex];
}

// Запускаємо анімацію з випадковою функцією тайминґу
animatedElement.style.animationName = 'complexAnimation';
changeTimingFunction();

// Змінюємо функцію тайминґу кожні 2 секунди
setInterval(changeTimingFunction, 2000);
автор: Bond

У цьому прикладі демонструється використання animationTimingFunction для зміни функції тайминґу анімації за допомогою випадаючого списку. Користувач може вибрати одну з шести різних функцій тайминґу, таких як linear, ease, ease-in, ease-out, ease-in-out або cubic-bezier, і побачити, як ця функція впливає на швидкість анімації елемента .box, який рухається вздовж осі X.

автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід