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


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

element.style.transitionTimingFunction – це властивість, яка дозволяє визначити швидкість зміни CSS-властивостей під час анімації переходу. Ця властивість задає криву прискорення для анімації, що дозволяє контролювати, як саме відбуватиметься зміна значень CSS-властивостей.

Основні значення transitionTimingFunction включають:

  • ease: повільний початок, потім швидше, а потім знову повільніше (за замовчуванням).
  • linear: рівномірна швидкість від початку до кінця.
  • ease-in: повільний початок, потім швидше.
  • ease-out: швидкий початок, потім повільніше.
  • ease-in-out: повільний початок, потім швидше, потім знову повільніше.
  • cubic-bezier(n, n, n, n): користувацька крива, що визначає точну форму анімації.

Щоб використовувати transitionTimingFunction, спочатку необхідно вибрати елемент, до якого ви хочете застосувати анімацію, і задати властивість переходу. Наприклад, для застосування плавної анімації зі значенням ease-in-out:

const element = document.getElementById('box');
element.style.transitionProperty = 'width';
element.style.transitionDuration = '2s';
element.style.transitionTimingFunction = 'ease-in-out';
element.style.width = '300px';

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

Якщо ви хочете використовувати користувацьку криву для анімації, можна застосувати cubic-bezier:

element.style.transitionTimingFunction = 'cubic-bezier(0.25, 0.1, 0.25, 1)';

Це дозволяє детально контролювати, як буде змінюватися швидкість анімації протягом її тривалості. Крива cubic-bezier визначається чотирма числами, що представляють дві точки контролю на кривій Безьє.

Для кількох властивостей можна задати різні функції таймінгу:

element.style.transitionProperty = 'width, height';
element.style.transitionDuration = '2s, 3s';
element.style.transitionTimingFunction = 'ease-in, linear';
element.style.width = '300px';
element.style.height = '200px';

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

Також transitionTimingFunction можна динамічно змінювати залежно від дій користувача:

element.addEventListener('mouseover', () => {
    element.style.transitionTimingFunction = 'ease-out';
    element.style.width = '400px';
});

element.addEventListener('mouseout', () => {
    element.style.transitionTimingFunction = 'ease-in';
    element.style.width = '100px';
});

Це дозволяє створювати інтерактивні ефекти, де швидкість анімації змінюється залежно від контексту.

Отже, element.style.transitionTimingFunction є потужним інструментом для створення плавних і привабливих анімацій на веб-сторінках, надаючи можливість детально контролювати швидкість зміни CSS-властивостей під час переходу.

автор: Bond

Порада

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

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

Використовуйте transitionTimingFunction разом з анімаціями на псевдоелементах, таких як ::before і ::after, щоб додати візуальні ефекти без зміни основної структури елемента. Це дозволяє додавати додаткові декоративні анімації, такі як підкреслення або обведення, які можуть покращити загальний вигляд сторінки.

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

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

автор: Bond

Синтаксис

element.style.transitionTimingFunction

Переглядачі

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

Приклади

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

У цьому прикладі ми використовуємо transitionTimingFunction з користувацькою кривою cubic-bezier для зміни кольору фону і стандартний таймінг ease для трансформації. Коли користувач натискає на елемент, колір фону змінюється з унікальною кривою, яка створює нестандартний прискорення та уповільнення, а елемент обертається з використанням плавного таймінгу. Це дозволяє створювати більш виразні та оригінальні анімації, які привертають увагу і додають інтерактивності.

HTML

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

JS

const element = document.getElementById('box');
element.style.transitionProperty = 'background-color, transform';
element.style.transitionDuration = '1.5s, 2s';
element.style.transitionTimingFunction = 'cubic-bezier(0.68, -0.55, 0.27, 1.55), ease';

element.addEventListener('click', () => {
    element.style.backgroundColor = 'blue';
    element.style.transform = 'rotate(45deg)';
});
автор: Bond

Цей приклад показує, як використовувати transitionTimingFunction для створення плавного розширення та звуження елемента з різними таймінгами. При наведенні курсору на елемент його ширина змінюється з використанням ease-in, що створює повільний початок і швидкий кінець, а висота змінюється з використанням ease-out, що створює швидкий початок і повільний кінець. Це додає візуальної динаміки та підвищує інтуїтивність взаємодії з користувачем.

HTML

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

JS

const element = document.getElementById('box');
element.style.transitionProperty = 'width, height';
element.style.transitionDuration = '2s, 3s';
element.style.transitionTimingFunction = 'ease-in, ease-out';

element.addEventListener('mouseover', () => {
    element.style.width = '300px';
    element.style.height = '200px';
});

element.addEventListener('mouseout', () => {
    element.style.width = '100px';
    element.style.height = '100px';
});
автор: Bond

Цей приклад дозволяє користувачам вибирати різні функції згладжування для анімації переміщення червоного блока за допомогою перемикачів. Коли користувач натискає кнопку "Animate", блок переміщається з лівого краю до правого і назад, використовуючи вибрану функцію згладжування, що демонструє, як функція transitionTimingFunction впливає на анімацію.

автор: 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`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

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

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