Variables CSS nativas ¿adición bienvenida o enorme error?

La comunidad de desarrollo web recibió recientemente una gran noticia. Si bien aún no están en los locales nocturnos, las experimentaciones están, una vez más, en curso, las cuales, si tienen éxito, nos brindarán soporte nativo para las variables de CSS, las combinaciones y los módulos en los navegadores. La pregunta es, sin embargo, ¿es esto algo bueno??


Pros

  • Mantener proyectos más fáciles
  • Escribe menos "código"
  • Integración más ágil con JavaScript
  • Actualice las configuraciones y parámetros de todo el sitio con un solo cambio de valor

Contras

  • El CSS debería ser complicado?
  • Mayor barrera de entrada para diseñadores.
  • La sintaxis propuesta actual parecerá demasiado confusa para algunos

Como funciona?

Antes de progresar, tenga en cuenta que estos desarrollos aún se encuentran en las etapas experimentales. Aún no se han implementado en ningún navegador..

Si está familiarizado modestamente con los preprocesadores de CSS, como Less o SASS, tendrá una comprensión básica de qué esperar de estas adiciones. (Dicho esto, la sintaxis propuesta desafortunadamente es un poco diferente). En el futuro, tendrá la capacidad de crear variables (globales y locales) y mixins, que se pueden considerar como una colección de estilos que pueden ser fácilmente referenciado.

Lo que tomó tanto tiempo?

Desde que tengo memoria, la comunidad ha estado clamando por las variables CSS; Entonces, ¿qué fue el atraco? En una palabra: el desacuerdo. De hecho, en 2008, el webkit estaba jugando con esta característica, incluso hasta el punto de implementarla en las noches, sin embargo, la propuesta se estancó poco después. Muchos sintieron que transformar CSS en un más como programador El lenguaje solo introduciría frustración; Algunos incluso sintieron que podría confundir a los diseñadores. Por ejemplo, si el color primario de su proyecto se almacena dentro de una variable, probablemente en la parte superior de su hoja de estilo, entonces se requeriría que el diseñador haga referencia a dos ubicaciones.

 @myColor: rojo;
 / * Menos sintaxis * / #someElem color: @myColor; 

Si bien este argumento es válido hasta cierto punto, no tiene mucho peso. La mayoría de los diseñadores mantienen un conjunto de colores del sitio en la parte superior de su hoja de estilo, que utilizan como referencia. La introducción de variables para contener estos valores es una solución lógica..


La sintaxis propuesta

Los fanáticos de SASS o menos estarán acostumbrados a definir variables como las siguientes:

 / * Less * / @primary_color: red; / * SASS * / $ primary_color: red;

La sintaxis propuesta complica un poco las cosas al escribir las variables. Por ejemplo:

 / * Declaración * / @var primary_color color rojo; / * Uso * / body color: var (primary_color); 

Vale la pena señalar

  • Todas las variables están precedidas por @var
  • Las variables se escriben. Tenga en cuenta el uso de la color palabra clave en el código de arriba.
  • Para acceder al valor de esta variable, usamos el var función, y pasar en el nombre de la variable.

Debo admitir: parece un poco redundante usar el @var directiva. La sintaxis que usa SASS y Less parece más apropiada y limpia. @myVar es más sucinto que @var myVar.

Los tipos de variables son una adición bienvenida, por otro lado.

Las variables se escriben. Cada tipo de valor primitivo, cada propiedad y algunos tipos de conveniencia adicionales existen. Esto nos permite exponer las nuevas cosas de CSSOM en ellos: document.styleSheets [0] .vars ['primary_color']. alpha = .5;
-- xanthir.com

Variables locales

Las variables también tendrán la posibilidad de ser objeto de un cuadro de declaración, a través del uso del @local directiva. Esto puede ser útil cuando una variable solo debe usarse una o dos veces dentro de un proyecto.

 .caja / * Declaración * / @local box_gradient background linear-gradient (top, black, white); / * Uso * / background: var (box_gradient); 

Mezclar

Las mezclas pueden ser increíblemente útiles. De hecho, cubrimos el proceso de crear un archivo de clase de mezclas no hace mucho tiempo en Nettuts +. Puede leer sobre esto aquí, aunque tenga en cuenta que las técnicas presentadas en ese artículo se basan en el preprocesador Less. Los nuevos experimentos, una vez más, utilizan una sintaxis ligeramente diferente.

 / * Less * / .border-radius (@radius: 3px) -webkit-border-radius: @radius; -moz-border-radius: @radius; radio del borde: @radius;  / * SASS * / @mixin border-radius ($ radius: 3px) -webkit-border-radius: $ radius; -moz-border-radius: $ radio; radio del borde: $ radio;  / * ¿Y posiblemente la solución nativa? * / @mixin radio-borde (longitud del radio 3px) -webkit-border-radius: var (radio); -moz-border-radius: var (radio); radio del borde: var (radio); 

Tenga en cuenta las similitudes entre SASS y la solución nativa propuesta para los mixins. Esto se debe a que los miembros del equipo de SASS prestan servicios como asesores..

Anidamiento

Como debe saber, Less y SASS le permiten nido selectores Esto puede reducir drásticamente el tamaño de sus hojas de estilo, ya que elimina la necesidad del mismo selector repetidamente.

 / * La forma actual * / #content … #content p … #content pa … #content pa: hover … / * Less y SASS * / #content … p … a … & : hover … / * ¿Y de forma nativa? * / #content … @this> p … @this> a … @this: hover …

Mientras que la sintaxis propuesta es más verboso, para su crédito, tiene una buena sintaxis similar a OO, que hará que muchos desarrolladores se sientan como en casa.

Pero recuerda: no todos los diseñadores son desarrolladores..

Espacio de nombres

Por defecto, en Menos, todas las variables son, para todos los propósitos y propósitos, globales. Como resultado, se vuelve difícil distribuir el código, ya que los nombres de variables existentes pueden sobrescribirse. La posible solución nativa será implementar módulos o espacios de nombres. Entonces pueden ser incluido en un bloque añadiendo el @utilizar directiva.

 Sitio @module @var primary_color color # 292929; @var secondary_color color azul; @mixin radio-borde (longitud del radio 3px) … radio-borde: 3px;  / * Uso incorrecto * / body color: var (primary_color); // El nombre de la variable no está definido / * Correcto * / body @use Site; color: var (primary_color); // # 292929 (Obras)

Conclusión

Como se señaló al comienzo de este artículo, la documentación que se menciona anteriormente todavía se encuentra en las etapas experimentales. Es posible, incluso probable, que la sintaxis cambie, en función de tu realimentación. Así que vamos a tenerlo. ¿La idea de variables nativas en mixins en tu CSS te excita ... o te asusta??

¿Yo? Bueno, yo estoy de acuerdo. Creo que la sintaxis propuesta podría requerir un poco de trabajo, ya que sin duda asustará a los diseñadores entre nosotros. Dicho esto, si la sintaxis se simplificó un poco, estoy 100% a bordo. Qué hay de tí?