Interpolar variables CSS numéricas |  trucos CSS

Interpolar variables CSS numéricas | trucos CSS

Podemos crear variables en CSS con bastante facilidad:

:root {
  --scale: 1;
}

Y podemos declararlos en cada elemento:

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

Aún mejor para un ejemplo como este es aplicar la variable a una interacción del usuario, digamos :hover:

:root {
  --scale: 1;
}

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

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

Pero si queremos usar esta variable en una animación… no.

:root {
  --scale: 1;
}

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

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

Esto se debe a que la variable se reconoce como una cadena y lo que necesitamos es un número que se pueda interpolar entre dos valores numéricos. Aquí es donde podemos llamar @property no solo registra la variable como una propiedad personalizada, sino que también define su sintaxis como un número:

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

¡Ahora tenemos la animación!

Querrás verifique el soporte del navegador de @property aterrizó solo en Chrome (a partir de versión 85) en el momento de escribir. Y si esperas olfatear con @supportsactualmente no tenemos suerte porque no acepta las reglas at como valores… todavía. Esto cambiará una vez at-rule()se convierte en algo real.

Comentarios

Aún no hay comentarios. ¿Por qué no comienzas el debate?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *