Lenguaje de hojas de estilo
Sass (abreviatura de syntactically awesome style sheets ) es un lenguaje de programación de preprocesadores que se interpreta o compila en hojas de estilo en cascada (CSS). SassScript es el lenguaje de programación en sí.
Sass consta de dos sintaxis . La sintaxis original, llamada "sintaxis sangrada", utiliza una sintaxis similar a Haml . [2] [3] Utiliza sangría para separar bloques de código y caracteres de nueva línea para separar reglas. La sintaxis más nueva, SCSS (Sassy CSS), utiliza formato de bloque como el de CSS. Utiliza llaves para indicar bloques de código y punto y coma para separar reglas dentro de un bloque. La sintaxis sangrada y los archivos SCSS reciben tradicionalmente las extensiones .sass y .scss, respectivamente. [4]
CSS3 consta de una serie de selectores y pseudoselectores que agrupan las reglas que se les aplican. Sass (en el contexto más amplio de ambas sintaxis) extiende CSS al proporcionar varios mecanismos disponibles en lenguajes de programación más tradicionales , particularmente lenguajes orientados a objetos , pero que no están disponibles para CSS3 en sí. Cuando se interpreta SassScript, crea bloques de reglas CSS para varios selectores según lo definido por el archivo Sass. El intérprete de Sass traduce SassScript a CSS. Alternativamente, Sass puede monitorear el archivo .sass o .scss y traducirlo a un archivo .css de salida siempre que se guarde el archivo .sass o .scss. [5]
La sintaxis sangrada es un metalenguaje. SCSS es un metalenguaje anidado y un superconjunto de CSS, ya que un CSS válido es un SCSS válido con la misma semántica .
SassScript proporciona los siguientes mecanismos: variables , anidamiento , mixins , [3] y herencia de selectores . [2]
Historia
Sass fue diseñado inicialmente por Hampton Catlin y desarrollado por Natalie Weizenbaum. [6] [7]
Implementaciones principales
SassScript se implementó en varios idiomas, las implementaciones más destacadas son:
- La implementación oficial de Dart de código abierto . [8]
- El módulo de nodo oficial "sass" en npm , que es Dart Sass compilado en JavaScript puro. [9]
- El módulo de nodo oficial "sass-embedded" que es un contenedor de JavaScript alrededor del ejecutable nativo de Dart. [10]
- La implementación original de Ruby de código abierto creada en 2006, [8] desde entonces obsoleta debido a la falta de mantenedores y llegó al final de su vida útil en marzo de 2019. [11] [12]
- libSass, la implementación oficial de C++ de código abierto , quedó obsoleta en octubre de 2020. [13]
- El módulo de nodo "node-sass" obsoleto en npm , basado en la libSass obsoleta. [14]
- JSass, una implementación no oficial de Java , [15] basada en la obsoleta libSass. [16]
- phamlp, una implementación no oficial de Sass/SCSS en PHP . [8]
- Vaadin tiene una implementación Java de Sass. [17]
- Firebug , una extensión XUL ("legacy") de Firefox para desarrollo web. [18] Desde entonces ha quedado obsoleta en favor de herramientas para desarrolladores integradas en el propio Firefox. Dejó de funcionar desde que Firefox 57 dejó de ofrecer compatibilidad con extensiones XUL.
Características
Variables
Sass permite definir variables. Las variables comienzan con un signo de dólar ( $
). La asignación de variables se realiza con dos puntos ( :
). [18]
SassScript admite cuatro tipos de datos: [18]
- Números (incluidas unidades)
- Cadenas (con comillas o sin ellas)
- Colores (nombre o nombres)
- Booleanos
Las variables pueden ser argumentos o resultados de una de varias funciones disponibles . [19] Durante la traducción, los valores de las variables se insertan en el documento CSS de salida. [2]
Anidación
CSS admite la anidación lógica, pero los bloques de código en sí no están anidados. Sass permite que el código anidado se inserte dentro de otro. [2]
En la documentación de Sass se analizan tipos de anidación más complicados, incluida la anidación de espacios de nombres y las referencias a padres. [18]
Bucles
Sass permite iterar sobre variables usando @for
, @each
y @while
, que pueden usarse para aplicar diferentes estilos a elementos con clases o identificadores similares.
Argumentos
Los mixins también admiten argumentos . [2]
En combinación
Herencia del selector
Si bien CSS3 admite la jerarquía del Modelo de objetos de documento (DOM), no permite la herencia de selectores. En Sass, la herencia se logra insertando una línea dentro de un bloque de código que utiliza la palabra clave @extend y hace referencia a otro selector. Los atributos del selector extendido se aplican al selector que realiza la llamada. [2]
Sass admite herencia múltiple . [18]
libSass
En la Conferencia de desarrolladores HTML5 de 2012, Hampton Catlin, el creador de Sass, anunció la versión 1.0 de libSass, una implementación C++ de código abierto de Sass desarrollada por Catlin, Aaron Leung y el equipo de ingeniería de Moovweb . [20] [21]
Según Catlin, libSass se puede "colocar en cualquier cosa y tendrá Sass en ella... Podrías colocarla directamente en Firefox hoy mismo y compilar Firefox y se compilaría allí. Escribimos nuestro propio analizador desde cero para asegurarnos de que fuera posible". [22]
Los objetivos de diseño de libSass son:
- Rendimiento: los desarrolladores han informado de aumentos de velocidad de 10 veces con respecto a la implementación de Sass en Ruby. [23]
- Integración más sencilla: libSass facilita la integración de Sass en más software. Antes de libSass, la integración estrecha de Sass en un lenguaje o producto de software requería la inclusión de todo el intérprete de Ruby. Por el contrario, libSass es una biblioteca enlazable estáticamente con cero dependencias externas y una interfaz similar a C, lo que facilita la integración directa de Sass en otros lenguajes y herramientas de programación. Por ejemplo, ahora existen enlaces de código abierto de libSass para Node , Go y Ruby . [21]
- Compatibilidad: el objetivo de libSass es la compatibilidad total con la implementación oficial de Ruby de Sass. Este objetivo se ha logrado en libsass 3.3. [24]
Integración IDE
Véase también
Referencias
- ^ ab "Dart Sass - última versión". github.com .
- ^ abcdef Media Mark (3.2.12). "Sass - Hojas de estilo sintácticamente asombrosas". Sass-lang.com . Consultado el 23 de febrero de 2014 .
{{cite web}}
: CS1 maint: numeric names: authors list (link) - ^ ab Firtman, Maximiliano (15 de marzo de 2013). Programación de la Web móvil. O'Reilly Media, Inc. ISBN 978-1-4493-3497-0.
- ^ Libby, Alex (2019). Presentación de Dart Sass: una introducción práctica al sustituto de Sass, creado sobre Dart. Berkeley, CA: Apress. doi :10.1007/978-1-4842-4372-5. ISBN 978-1-4842-4371-8.
- ^ Sass - Tutorial de hojas de estilo sintácticamente asombrosas
- ^ "Sass: hojas de estilo sintácticamente asombrosas". sass-lang.com . Archivado desde el original el 1 de septiembre de 2013.
- ^ "Blog de Natalie Weizenbaum". Archivado desde el original el 11 de octubre de 2007.
- ^ abc "Sass / Scss". Drupal.org. 21 de octubre de 2009. Consultado el 23 de febrero de 2014 .
- ^ "descaro". www.npmjs.com .
- ^ "sass-incrustado". www.npmjs.com .
- ^ Weizenbaum, Natalie. «Ruby Sass ha llegado al final de su vida: « Sass Blog ». sass.logdown.com . Consultado el 21 de abril de 2019 .
- ^ "Sass: Ruby Sass". sass-lang.com . Consultado el 21 de abril de 2019 .
- ^ "LibSass está obsoleto". sass-lang.com . 26 de octubre de 2020.
- ^ "nodo-sass". www.npmjs.com .
- ^ "jsass - Una implementación Java del compilador Sass (y otras ventajas). - Google Project Hosting" . Consultado el 23 de febrero de 2014 .
- ^ "Documentación de JSass". jsass.readthedocs.io .
- ^ "SassCompiler (Vaadin 7.0.7 API)". Vaadin.com. 2013-06-06. Archivado desde el original el 2014-04-21 . Consultado el 2014-02-23 .
- ^ abcde Sass (Hojas de estilo sintácticamente asombrosas) SASS_REFERENCE
- ^ Módulo: Sass::Script::Functions Funciones Sass
- ^ H. Catlin (15 de octubre de 2012). "Las 6 reglas de Hampton para el diseño móvil". Conferencia de desarrolladores de HTML5. Archivado desde el original el 15 de diciembre de 2021. Consultado el 11 de julio de 2013 .
- ^ ab M. Catlin (30 de abril de 2012). "libsass". Blog de Moovweb. Archivado desde el original el 8 de mayo de 2013. Consultado el 11 de julio de 2013 .
- ^ A. Stacoviak y A. Thorp (26 de junio de 2013). "Sass, libsass, Haml y más con Hampton Catlin". Archivado desde el original el 6 de agosto de 2013. Consultado el 30 de julio de 2013 .
- ↑ D. Le Nouaille (7 de junio de 2013). «Sassc y Borbón» . Consultado el 11 de julio de 2013 .
- ^ "Compatibilidad con Sass". sass-compatibility.github.io . Consultado el 29 de noviembre de 2019 .
Lectura adicional
- Ndia, John Gichuki; Muketha, Geoffrey Muchiri; Omieno, Kelvin Kabeti (2019). "Métricas de complejidad para hojas de estilo en cascada Sassy" (PDF) . Revista Báltica de Computación Moderna . 7 (4). doi :10.22364/bjmc.2019.7.4.01.
- Cederholm, Dan (2013). Sass para diseñadores web (PDF) . Un libro aparte. ISBN 978-1-937557-13-3.
- Watts, Luke (2016). Dominando el descaro. Packt Publishing.
Enlaces externos