Інтерполяція числових змінних CSS PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Інтерполяція числових змінних CSS

Ми можемо створювати змінні в CSS досить легко:

:root {
  --scale: 1;
}

І ми можемо оголосити їх на будь-якому елементі:

.thing {
  transform: scale(--scale);
}

Навіть краще для такого прикладу, як цей, застосувати змінну до взаємодії користувача, скажімо :hover:

:root {
  --scale: 1;
}

.thing {
  height: 100px;
  transform: scale(--scale);
  width: 100px;
}

.thing:hover {
  --scale: 3;
}

Але якби ми хотіли використати цю змінну в анімації… нічого.

:root {
  --scale: 1;
}

@keyframes scale {
  from { --scale: 0; }
  to { --scale: 3; }
}

/* Nope! */
.thing {
  animation: scale .25s ease-in;
  height: 100px;
  width: 100px;
}

Це тому, що змінна розпізнається як рядок, а нам потрібне число, яке можна інтерпольувати між двома числовими значеннями. Ось куди ми можемо заїхати @property щоб не лише зареєструвати змінну як власну властивість, але й визначити її синтаксис як число:

@property --scale {
  syntax: "<number>";
  initial-value: 1;
  inherits: true;
}

Тепер ми отримуємо анімацію!

Ти захочеш перевірте підтримку браузера з @property потрапив лише в Chrome (починаючи з версія 85) на момент написання цього. І якщо ви сподіваєтеся винюхати це з @supports, нам зараз не пощастило, оскільки він не приймає правила at-rules як значення… поки що. Це колись зміниться at-rule()стає справжньою річчю.

Часова мітка:

Більше від CSS-хитрощі