Zum Hauptinhalt springen

La API de propiedades y valores de Houdini llegará a su archivo CSS en Chromium 85.

igraal_de-de

CSS Houdini es un término general que cubre un conjunto de API de bajo nivel que exponen partes del motor de renderizado CSS y dan a los desarrolladores acceso al modelo de objetos CSS. Este es un gran cambio para el ecosistema CSS, ya que permite a los desarrolladores decirle al navegador cómo leer y analizar CSS personalizado sin esperar a que los proveedores de navegadores implementen de forma nativa estas características. ¡Qué emocionante!

Una de las adiciones más emocionantes a CSS dentro del paraguas de Houdini es la
Eigenschaften und Werte API. Esta API sobrealimenta sus propiedades personalizadas de CSS (también conocidas comúnmente como variables CSS) dándoles un significado semántico (definido por una sintaxis) e incluso valores alternativos, lo que permite las pruebas CSS.

Schreiben Sie benutzerdefinierte Houdini-Eigenschaften

Aquí hay un ejemplo de configuración de una propiedad personalizada (piense: variable CSS), pero ahora con una sintaxis (tipo), un valor inicial (respaldo) y un booleano de herencia (¿hereda el valor de su padre o no?). La forma actual de hacer esto es a través de CSS.registerProperty () in JavaScript, aber in Chromium 85 und höher, die
@Eigentum la sintaxis será compatible con sus archivos CSS:

Eigenständige JavaScript-Datei (Chromium 78)

CSS . registerProperty ( {
Name : '--colorPrimary' ,
Syntax : ' ' ,
initialValue : 'magenta' ,
erbt : falsch
} ) ;

In der CSS-Datei enthalten (Chromium 85)

@property --colorPrimary {
Syntax : ' ' ;
Anfangswert : Magenta ;
erbt : falsch ;
}}

Jetzt können Sie zugreifen --colorPrimary como cualquier otra propiedad personalizada de CSS, a través de
var (- colorPrimary). Sin embargo, la diferencia aquí es que --colorPrimary no se lee solo como una cadena. ¡Tiene datos!

Fallstricke!

Beim Schreiben einer benutzerdefinierten Eigenschaft, die bei a registriert ist Syntax, tú muss también incluye un Ursprünglicher Wert.

Alternative Werte

Al igual que con cualquier otra propiedad personalizada, puede obtener (usando var) o establecer (escribir / reescribir) valores, pero con las propiedades personalizadas de Houdini, si establece un valor falso al anularlo, el motor de renderizado CSS enviará el valor inicial (su valor de reserva) en lugar de ignorar la línea.

Betrachten Sie das folgende Beispiel. das --colorPrimary Variable hat eine
Ursprünglicher Wert von Magenta. Pero el desarrollador le ha dado el valor no válido «23». Sin @Eigentum, el analizador CSS ignoraría el código no válido. Ahora, el analizador vuelve a Magenta. Esto permite verdaderos resguardos y pruebas dentro de CSS. ¡Ordenado!

.card {
Hintergrundfarbe : var ( --colorPrimary ) ;
}}

.highlight-card {
--colorPrimary : gelb ;
Hintergrundfarbe : var ( --colorPrimary ) ;
}}

.eine andere Karte {
--colorPrimary : 23 ;
Hintergrundfarbe : var ( --colorPrimary ) ;
}}

Syntax

Con la función de sintaxis, ahora puede escribir CSS semántico especificando un tipo. Los tipos actuales que están permitidos incluyen:

  • Länge
  • Nummer
  • Prozentsatz
  • Längenprozentsatz
  • Farbe
  • Bild
  • URL
  • ganze Zahl
  • Winkel
  • Zeit
  • Auflösung
  • Transformationsliste
  • Transformationsfunktion
  • benutzerdefinierte-ident (una cadena de identificación personalizada)

Durch Festlegen einer Syntax kann der Browser nach benutzerdefinierten Eigenschaften suchen. Dies hat viele Vorteile.

Para ilustrar este punto, le mostraré cómo animar un degradado. Actualmente, no hay forma de animar (o interpolar) sin problemas entre los valores de gradiente, ya que cada declaración de gradiente se analiza como una cadena.

support1-3683783

Usando una propiedad personalizada con una sintaxis de «número», el degradado de la izquierda muestra una transición suave entre los valores de parada. El degradado de la derecha usa una propiedad personalizada predeterminada (sin sintaxis definida) y muestra una transición abrupta.

En este ejemplo, el porcentaje de parada de gradiente se anima desde un valor inicial del 40% hasta un valor final del 100% mediante una interacción de desplazamiento. Debería ver una transición suave de ese color degradado superior hacia abajo.

El navegador de la izquierda es compatible con la API de propiedades y valores de Houdini, lo que permite una transición de parada de gradiente suave. El navegador de la derecha no lo hace. El navegador no compatible solo puede entender este cambio como una cadena que va del punto A al punto B. No hay oportunidad de interpolar los valores y, por lo tanto, no se ve esa transición suave.

Sin embargo, si declara el tipo de sintaxis al escribir propiedades personalizadas y luego usa esas propiedades personalizadas para habilitar la animación, verá la transición. Puede crear una instancia de la propiedad personalizada --gradPoint mögen:


@supports ( Hintergrund : Farbe ( etwas ) ) {
@property --gradPoint {
Syntax : ' ' ;
erbt : falsch ;
Anfangswert : 40% ;
}}
}}

Und wenn es Zeit ist, es zu animieren, können Sie den Wert der Initiale aktualisieren 40% zu 100%:

@supports ( Hintergrund : Farbe ( etwas ) ) {
.post: schweben,
.post: focus
{
--gradPoint : 100% ;
}}
}}

Esto ahora permitirá esa suave transición de gradiente.

Demo-9540335

Bordes degradados de transición suave. Ver demostración en Glitch

Fazit

das @Eigentum rule hace que una tecnología emocionante sea aún más accesible al permitirle escribir CSS semánticamente significativo dentro del propio CSS. Para obtener más información sobre CSS Houdini y la API de propiedades y valores, consulte estos recursos:

Foto von Christliche Escobar auf Unsplash.