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";
У цьому прикладі елементу одночасно застосовуються дві анімації:
animation1з тривалістю 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 дозволяє ефективно керувати такими анімаціями, роблячи веб-сторінки більш інтерактивними та привабливими для користувачів. Вона відкриває широкі можливості для створення складних анімаційних ефектів, що можуть бути використані для поліпшення користувацького досвіду на веб-сайтах.
- Порада
-
Для керування анімацією під час її виконання використовуйте методи
автор: Bondelement.animate()таAnimation.prototype. Наприклад,const player = element.animate(keyframes, options)повертає об'єктAnimation, який дозволяє керувати анімацією за допомогою методів, таких якplayer.pause(),player.reverse()абоplayer.updatePlaybackRate(2). - Порада
-
Використовуйте властивість
автор: BondanimationPlayStateдля програмного керування станом анімації. Значенняrunningзапускає анімацію, аpaused- призупиняє її. Це корисно для створення інтерактивних анімацій, що реагують на дії користувача. Наприклад,element.style.animationPlayState = 'paused'зупиняє анімацію на поточному кадрі. - Порада
-
Для плавного переходу між анімаціями використовуйте властивість
автор: BondanimationTimingFunction. Вона дозволяє визначити часову функцію, яка керує швидкістю анімації на різних етапах її виконання. Наприклад,animation: myAnimation 2s ease-in-outстворює плавний розгін і гальмування анімації на початку та в кінці.
Синтаксис
element.style.animation
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| 43 | 16 | 9 | 30 | 12 | 10 |
| Переглядач | ||||
|---|---|---|---|---|
| 43 | 43 | 16 | 9 |
Приклади
+ запропонувати свій приклад у пісочниці
У цьому прикладі ми маємо елемент div з класом animated-element, який буде анімуватися. Користувач може вибрати одну з трьох анімацій за допомогою випадаючого списку animationSelect: "Анімація слайду" (slideIn), "Анімація появи" (fadeIn) або "Анімація відскоку" (bounce).
При натисканні на кнопку "Запустити анімацію" (playAnimation) ми створюємо нову анімацію за допомогою методу element.animate() і застосовуємо вибрану анімацію до елемента за допомогою властивості animation. Анімація буде циклічно повторюватися нескінченну кількість разів.
Кнопка "Призупинити анімацію" (pauseAnimation) дозволяє зупинити поточну анімацію за допомогою методу animation.cancel() і скидає властивість animation елемента до 'none'.
Якщо користувач змінює вибір анімації у випадаючому списку animationSelect, поточна анімація скасовується, і нова анімація застосовується до елемента.
Цей приклад демонструє, як можна використовувати властивість animation для додавання різних анімацій до елементів на веб-сторінці та керування ними програмно за допомогою JavaScript. Користувач може взаємодіяти з прикладом, вибираючи анімацію зі списку, запускаючи та зупиняючи її за допомогою кнопок.
HTML
<header>
<h2 class="title">animation</h2>
<p class="description">Застосовує анімацію, визначену в CSS, до елемента.</p>
</header>
<main>
<div class="result">
<div class="animated-element">Це анімований елемент</div>
<div class="controls">
<button id="playAnimation">Запустити анімацію</button>
<button id="pauseAnimation">Призупинити анімацію</button>
<select id="animationSelect">
<option value="slideIn">Анімація слайду</option>
<option value="fadeIn">Анімація появи</option>
<option value="bounce">Анімація відскоку</option>
</select>
</div>
</div>
</main>
CSS
body {
font-size: 16px;
line-height: 1.5;
font-family: monospace;
}
header {
background-color: #f1f1f1;
margin-bottom: 25px;
padding: 15px;
-webkit-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
-moz-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}
header h2.title {
padding-bottom: 15px;
border-bottom: 1px solid #999;
}
header p.description {
font-style: italic;
color: #222;
}
.result {
background-color: #f8f8f8;
padding: 15px;
-webkit-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
-moz-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}
.animated-element {
width: 200px;
height: 200px;
background-color: lightgray;
margin-bottom: 20px;
}
@keyframes slideIn {
0% {
transform: translateX(-100%);
}
100% {
transform: translateX(0);
}
}
@keyframes fadeIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
@keyframes bounce {
0% {
transform: translateY(0);
}
50% {
transform: translateY(-20px);
}
100% {
transform: translateY(0);
}
}
JS
const animatedElement = document.querySelector('.animated-element');
const playButton = document.getElementById('playAnimation');
const pauseButton = document.getElementById('pauseAnimation');
const animationSelect = document.getElementById('animationSelect');
let animation;
playButton.addEventListener('click', () => {
const animationName = animationSelect.value;
animation = animatedElement.animate(
[
{ transform: 'none' },
{ transform: 'none' }],
{
duration: 1000,
iterations: Infinity,
easing: 'ease-in-out',
direction: 'alternate' });
animatedElement.style.animation = `${animationName} 1s infinite`;
});
pauseButton.addEventListener('click', () => {
if (animation) {
animation.cancel();
animatedElement.style.animation = 'none';
}
});
animationSelect.addEventListener('change', () => {
if (animation) {
animation.cancel();
}
const animationName = animationSelect.value;
animatedElement.style.animation = `${animationName} 1s infinite`;
});
//# sourceURL=pen.js
У цьому прикладі ми використовуємо властивість 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>
У цьому складнішому прикладі ми використовуємо властивість 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>
Коментарі
Коментарів ще немає — будьте першим!