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


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

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

Основний приклад

Найпростішим випадком використання властивості animation є встановлення анімації для елемента. Розглянемо наступний приклад:

const element = document.getElementById("myElement");
element.style.animation = "exampleAnimation 2s infinite";

У цьому прикладі ми знаходимо елемент за його id та встановлюємо йому анімацію з ім'ям exampleAnimation, яка триватиме 2 секунди та повторюватиметься нескінченно.

Опис параметрів

Властивість animation може приймати кілька параметрів, що задаються через пробіл:

  • Назва анімації (animation-name)
  • Тривалість (animation-duration)
  • Функція таймінгу (animation-timing-function)
  • Затримка (animation-delay)
  • Кількість повторень (animation-iteration-count)
  • Напрямок анімації (animation-direction)
  • Стан заповнення (animation-fill-mode)
  • Чи працює анімація (animation-play-state)

Розглянемо більш складний приклад з використанням декількох параметрів:

const element = document.getElementById("myElement");
element.style.animation = "exampleAnimation 2s ease-in-out 1s 3 reverse both paused";

У цьому випадку анімація exampleAnimation буде мати такі характеристики:

  • Тривалість: 2 секунди
  • Функція таймінгу: ease-in-out
  • Затримка: 1 секунда
  • Кількість повторень: 3 рази
  • Напрямок: reverse
  • Стан заповнення: both
  • Статус: paused

Застосування складніших анімацій

Властивість animation також дозволяє задавати кілька анімацій одночасно. Це досягається шляхом розділення окремих анімацій комою:

const element = document.getElementById("myElement");
element.style.animation = "animation1 2s, animation2 3s 1s both";

У цьому прикладі елементу одночасно застосовуються дві анімації:

  1. animation1 з тривалістю 2 секунди.
  2. animation2 з тривалістю 3 секунди, затримкою 1 секунда та станом заповнення both.

Маніпулювання анімаціями за допомогою JavaScript

JavaScript дозволяє не лише встановлювати анімації, але й динамічно змінювати їх параметри. Наприклад, можна змінити тривалість анімації в процесі виконання:

const element = document.getElementById("myElement");
element.style.animationDuration = "5s";

Цей код змінює тривалість поточної анімації елемента на 5 секунд.

Використання ключових кадрів

Щоб анімація працювала, необхідно визначити її ключові кадри в CSS. Наприклад:

@keyframes exampleAnimation {
  from { opacity: 0; }
  to { opacity: 1; }
}

Цей код визначає анімацію exampleAnimation, яка змінює прозорість елемента з 0 до 1.

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

автор: Bond

Порада

Для керування анімацією під час її виконання використовуйте методи element.animate() та Animation.prototype. Наприклад, const player = element.animate(keyframes, options) повертає об'єкт Animation, який дозволяє керувати анімацією за допомогою методів, таких як player.pause(), player.reverse() або player.updatePlaybackRate(2).

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

Використовуйте властивість animationPlayState для програмного керування станом анімації. Значення running запускає анімацію, а paused - призупиняє її. Це корисно для створення інтерактивних анімацій, що реагують на дії користувача. Наприклад, element.style.animationPlayState = 'paused' зупиняє анімацію на поточному кадрі.

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

Для плавного переходу між анімаціями використовуйте властивість animationTimingFunction. Вона дозволяє визначити часову функцію, яка керує швидкістю анімації на різних етапах її виконання. Наприклад, animation: myAnimation 2s ease-in-out створює плавний розгін і гальмування анімації на початку та в кінці.

автор: Bond

Синтаксис

element.style.animation

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач 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

Приклади

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

У цьому прикладі ми використовуємо властивість animation для додавання анімації до елемента при натисканні на кнопку. Властивість animation дозволяє застосувати стиль анімації, визначений за допомогою CSS, до елемента через JavaScript.

<button id="animateButton">Анімувати елемент</button>
<div id="animatedElement">Це анімований елемент</div>

<script>
const animatedElement = document.getElementById('animatedElement');
const animateButton = document.getElementById('animateButton');

animateButton.addEventListener('click', () => {
  animatedElement.style.animation = 'slideIn 1s ease-out';
});
</script>

<style>
@keyframes slideIn {
  0% {
    transform: translateX(-100%);
  }
  100% {
    transform: translateX(0);
  }
}
</style>
автор: Bond

У цьому складнішому прикладі ми використовуємо властивість animation для створення циклічної анімації, яку можна зупинити та відновити за допомогою JavaScript.

<button id="toggleAnimation">Перемкнути анімацію</button>
<div id="animatedElement">Це анімований елемент</div>

<script>
const animatedElement = document.getElementById('animatedElement');
const toggleButton = document.getElementById('toggleAnimation');
let isAnimationRunning = false;

toggleButton.addEventListener('click', () => {
  if (isAnimationRunning) {
    animatedElement.style.animationPlayState = 'paused';
    isAnimationRunning = false;
  } else {
    animatedElement.style.animation = 'pulse 2s infinite';
    animatedElement.style.animationPlayState = 'running';
    isAnimationRunning = true;
  }
});
</script>

<style>
@keyframes pulse {
  0% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.2);
  }
  100% {
    transform: scale(1);
  }
}
</style>
автор: Bond

У цьому прикладі ми маємо елемент div з класом animated-element, який буде анімуватися. Користувач може вибрати одну з трьох анімацій за допомогою випадаючого списку animationSelect: "Анімація слайду" (slideIn), "Анімація появи" (fadeIn) або "Анімація відскоку" (bounce).

При натисканні на кнопку "Запустити анімацію" (playAnimation) ми створюємо нову анімацію за допомогою методу element.animate() і застосовуємо вибрану анімацію до елемента за допомогою властивості animation. Анімація буде циклічно повторюватися нескінченну кількість разів.

Кнопка "Призупинити анімацію" (pauseAnimation) дозволяє зупинити поточну анімацію за допомогою методу animation.cancel() і скидає властивість animation елемента до 'none'.

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

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

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

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

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