Наповнення JS розділу

Добридень, Пані та Панове, завдяки вам вдалося зібрати більше 19тис грн з необхідних 15тис на впровадження JS розділу.

JS розділ вже впроваджено - переходимо до його наповнення і почнемо бігти довгий марафон, адже JS має більше 1100 різноманітних методів, властивостей, подій і т.д., які необхідно описати.

Будемо працювати, і вдень, і вночі, щоб орієнтовно взимку закінчити наповнювати JS розділ!

Ви також можете допомогти нам в цьому. Долучайтеся до нашої спільноти в дискорді - ставайте її частиною і допомагайте нашому розвитку.

Також, підтримуйте нас матеріально.

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

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

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

Для використання animationName, необхідно спочатку визначити анімацію за допомогою правил CSS @keyframes. Після цього, за допомогою JavaScript, можна призначити цю анімацію до елемента через властивість animationName.

Розглянемо базовий приклад, де HTML-елемент з id "box" буде анімовано за допомогою визначеної CSS-анімації:

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

У CSS ми створюємо анімацію:

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

#box {
  width: 100px;
  height: 100px;
  background-color: blue;
  animation-duration: 2s;
  animation-iteration-count: 1;
}

Тепер, за допомогою JavaScript, ми можемо призначити анімацію до елемента box:

var box = document.getElementById('box');
box.style.animationName = 'moveRight';

У цьому прикладі анімація moveRight буде застосована до елемента box, і він переміститься праворуч на 100 пікселів.

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

<button id="animateButton">Animate</button>
<div id="box"></div>
@keyframes moveDown {
  0% { transform: translateY(0); }
  100% { transform: translateY(100px); }
}
var box = document.getElementById('box');
var button = document.getElementById('animateButton');

button.addEventListener('click', function() {
  box.style.animationName = 'moveDown';
});

У цьому прикладі при натисканні кнопки Animate елемент box почне переміщатися вниз на 100 пікселів.

Властивість animationName також може бути використана для зміни анімацій в залежності від різних умов. Наприклад, можна змінювати анімацію при зміні розміру вікна браузера:

window.addEventListener('resize', function() {
  if (window.innerWidth < 600) {
    box.style.animationName = 'moveRight';
  } else {
    box.style.animationName = 'moveDown';
  }
});

У цьому випадку, якщо ширина вікна браузера менша за 600 пікселів, буде застосована анімація moveRight, а якщо більша — moveDown.

Ще один приклад демонструє, як можна комбінувати кілька анімацій для створення більш складних ефектів. Припустимо, ми хочемо, щоб елемент спочатку переміщався праворуч, а потім вниз. Ми можемо створити дві анімації:

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

@keyframes moveDown {
  0% { transform: translateY(0); }
  100% { transform: translateY(100px); }
}
var box = document.getElementById('box');

// Спочатку анімація moveRight
box.style.animationName = 'moveRight';
box.style.animationDuration = '2s';
box.style.animationIterationCount = '1';

// Затримка перед запуском другої анімації
setTimeout(function() {
  box.style.animationName = 'moveDown';
  box.style.animationDuration = '2s';
  box.style.animationIterationCount = '1';
}, 2000);

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

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

Порада:

Якщо потрібно застосувати кілька анімацій одночасно, можна розділити їх назви пробілом у значенні animationName. Наприклад, animationName = "fadeIn moveX" застосує анімації fadeIn та moveX до елемента.

Порада:

Якщо не потрібно застосовувати жодної анімації, встановіть animationName на порожній рядок (''). Це зупинить відтворення будь-якої анімації на елементі.

Синтаксис

element.style.animationName

Значення

Return

Переглядачі

Переглядач

1

1

3

8

12

Переглядач

4.4

18

4

1

Переглядач

-

-

Приклади


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

У цьому прикладі ми використовуємо element.style.animationName для запуску анімації, яка визначена в CSS. Цей метод дозволяє динамічно змінювати ім'я CSS-анімації для вибраного елемента.

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

// Запускаємо анімацію
myElement.style.animationName = 'fadeIn';

У цьому прикладі ми використовуємо element.style.animationName для створення ефекту "слайд-шоу" із зображеннями. Анімація буде циклічно змінювати зображення кожні кілька секунд.

// Отримуємо елемент для зображення
const imageElement = document.getElementById('slideImage');

// Масив назв анімацій
const animations = ['slideInLeft', 'slideOutLeft', 'slideInRight', 'slideOutRight'];

// Лічильник для переходу між анімаціями
let animationIndex = 0;

// Функція для зміни анімації
function changeAnimation() {
  imageElement.style.animationName = animations[animationIndex];
  animationIndex = (animationIndex + 1) % animations.length;
}

// Запускаємо анімацію кожні 3 секунди
setInterval(changeAnimation, 3000);