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
, розробники можуть створювати анімації з різноманітними ритмами та ефектами, що робить веб-сторінки більш динамічними та привабливими для користувачів. Ця властивість дозволяє точно налаштовувати поведінку анімацій, роблячи їх більш реалістичними та природними.
Порада: | Експериментуйте з різними значеннями властивості |
Порада: | Для складних анімацій розгляньте можливість використання різних функцій тайминґу для різних частин анімації. Ви можете застосувати різні функції тайминґу до різних ключових кадрів анімації за допомогою |
Порада: | Якщо ви використовуєте бібліотеку анімацій, такі як GreenSock або Anime.js, перевірте, чи підтримує вона функції тайминґу. Це може значно спростити створення складних анімацій з різними функціями тайминґу без необхідності писати весь CSS вручну. |
Синтаксис
element.style.animationTimingFunction
Значення
Return
Переглядачі
Переглядач | |||||
---|---|---|---|---|---|
1 |
1 |
3 |
8 |
12 |
Переглядач | ||||
---|---|---|---|---|
4.4 |
18 |
4 |
1 |
Переглядач | ||
---|---|---|
- |
- |
Приклади
У цьому прикладі демонструється використання animationTimingFunction
для зміни функції тайминґу анімації за допомогою випадаючого списку. Користувач може вибрати одну з шести різних функцій тайминґу, таких як linear
, ease
, ease-in
, ease-out
, ease-in-out
або cubic-bezier
, і побачити, як ця функція впливає на швидкість анімації елемента .box
, який рухається вздовж осі X.
У цьому прикладі ми використовуємо element.style.animationTimingFunction
для встановлення функції тайминґу для анімації елемента. Це дозволяє контролювати швидкість анімації протягом її тривалості.
// Отримуємо елемент
const myElement = document.getElementById('myElement');
// Запускаємо анімацію з функцією тайминґу 'ease-in'
myElement.style.animationName = 'fadeIn';
myElement.style.animationTimingFunction = 'ease-in';
Цей приклад демонструє, як можна використовувати element.style.animationTimingFunction
для створення складних ефектів анімації з різними функціями тайминґу, поєднуючи його з іншими методами JavaScript.
// Отримуємо елемент
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);