Sass (abreviatura de syntaclyticly awesome style sheets ) es un lenguaje de scripting de preprocesador que se interpreta o compila en hojas de estilo en cascada (CSS). SassScript es el lenguaje de scripting propiamente dicho.
Sass consta de dos sintaxis . La sintaxis original, llamada "sintaxis con sangría", utiliza una sintaxis similar a la de Haml . [ 2 ] [ 3 ] Utiliza la sangría para separar bloques de código y los saltos de línea para separar reglas. La sintaxis más reciente, SCSS (Sassy CSS), utiliza un formato de bloques similar al de CSS. Utiliza llaves para denotar bloques de código y punto y coma para separar reglas dentro de un bloque. Los archivos de sintaxis con sangría y SCSS tradicionalmente reciben las extensiones .sass y .scss, respectivamente. [ 4 ]
CSS3 consta de una serie de selectores y pseudoselectores que agrupan reglas que les son aplicables. 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 en CSS3. 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 cada vez que se guarda el archivo .sass o .scss. [ 5 ]
La sintaxis con sangría 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 importantes
SassScript se implementó en varios lenguajes; las implementaciones más destacadas son:
- La implementación oficial de código abierto de Dart . [ 8 ]
- El módulo oficial "sass" de Node.js en npm , que es Dart Sass compilado a JavaScript puro. [ 9 ]
- El módulo oficial de Node.js "sass-embedded" es un envoltorio 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 está obsoleta debido a la falta de mantenedores y alcanzó el fin de su vida útil en marzo de 2019. [ 11 ] [ 12 ]
- libSass, la implementación oficial de código abierto de C++ , (obsoleta en octubre de 2020 [ 13 ] y luego alcanzó) el fin de su ciclo de vida en octubre de 2025. [ 14 ]
- El módulo de Node "node-sass" en npm (obsoleto en ese momento) que finalizó su vida útil en julio de 2024 [ 15 ] , basado en libSass, que ya había finalizado su vida útil [ 16 ] .
- JSass, una implementación no oficial de Java , [ 17 ] basada en libSass, que ya no tiene soporte. [ 18 ]
- phamlp, una implementación no oficial de Sass/SCSS en PHP . [ 8 ]
- Vaadin tiene una implementación de Sass en Java. [ 19 ]
- Firebug , una extensión XUL ("heredada") de Firefox para el desarrollo web. [ 20 ] Posteriormente fue declarada obsoleta y luego descontinuada en favor de las herramientas para desarrolladores integradas en el propio Firefox. Dejó de funcionar cuando Firefox 57 dejó de ser compatible con las 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 ( :). [ 20 ]
SassScript admite cuatro tipos de datos: [ 20 ]
- Números (incluidas las unidades)
- Cadenas de texto (con o sin comillas)
- Colores (nombre o nombres)
- Booleanos
Las variables pueden ser argumentos o resultados de varias funciones disponibles . [ 21 ] Durante la traducción, los valores de las variables se insertan en el documento CSS de salida. [ 2 ]
Anidación
CSS admite el anidamiento lógico, pero los bloques de código en sí no están anidados. Sass permite insertar código anidado dentro de otro. [ 2 ]
En la documentación de Sass se tratan tipos de anidamiento más complejos, como el anidamiento de espacios de nombres y las referencias a padres. [ 20 ]
Bucles
Sass permite iterar sobre variables usando @for, @eachy @while, que se pueden usar para aplicar diferentes estilos a elementos con clases o identificadores similares.
Argumentos
Los mixins también admiten argumentos . [ 2 ]
En combinación
Herencia de selectores
Aunque CSS3 admite la jerarquía del Modelo de Objetos del 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 . [ 20 ]
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 de código abierto en C++ de Sass desarrollada por Catlin, Aaron Leung y el equipo de ingeniería de Moovweb . [ 22 ] [ 23 ]
Según Catlin, libSass se puede "insertar en cualquier cosa y tendrá Sass... Podrías insertarlo directamente en Firefox hoy mismo y compilarlo allí. Escribimos nuestro propio analizador sintáctico desde cero para asegurarnos de que eso fuera posible". [ 24 ]
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. [ 25 ]
- Integración más sencilla : libSass facilita la integración de Sass en más software. Antes de libSass, integrar Sass de forma precisa en un lenguaje o producto de software requería incluir todo el intérprete de Ruby. En cambio, libSass es una biblioteca enlazable estáticamente, sin dependencias externas y con una interfaz similar a la de 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 para libSass en Node , Go y Ruby . [ 23 ]
- Compatibilidad : el objetivo de libSass es la compatibilidad total con la implementación oficial de Sass en Ruby. Este objetivo se ha logrado en libsass 3.3. [ 26 ]
Integración con IDE
Véase también
Referencias
- 1 2 "Dart Sass - última versión" . github.com .
- 1 2 3 4 5 6 Media Mark (3.2.12). "Sass - Syntactically Awesome Stylesheets" . Sass-lang.com . Recuperado el 23 de febrero de 2014 .
{{cite web}}: CS1 maint: nombres numéricos: lista de autores ( enlace ) - 1 2 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). Introducción a Dart Sass: Una introducción práctica al reemplazo de Sass, basado en Dart . Berkeley, CA: Apress. doi : 10.1007/978-1-4842-4372-5 . ISBN 978-1-4842-4371-8.
- ↑ Sass - Hojas de estilo sintácticamente geniales Archivado el 09/10/2013 en el tutorial de Wayback Machine
- ↑ "Sass: Hojas de estilo sintácticamente geniales" . sass-lang.com . Archivado del original el 1 de septiembre de 2013.
- ↑ "Blog de Natalie Weizenbaum" . Archivado del original el 11 de octubre de 2007.
- 1 2 3 "Sass / Scss" . Drupal.org. 21-10-2009. Archivado del original el 10-03-2016 . Recuperado el 23-02-2014 .
- ↑ "sass" . www.npmjs.com .
- ↑ "sass-embedded" . 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.
- ↑ "Sass: LibSass ha llegado al final de su ciclo de vida" . sass-lang.com . Consultado el 18 de noviembre de 2025 .
- ↑ "Sass: Node Sass llega al final de su ciclo de vida" . sass-lang.com . Consultado el 18 de noviembre de 2025 .
- ↑ "node-sass" . www.npmjs.com .
- ↑ "jsass – Una implementación en Java del compilador Sass (y algunas otras cosas interesantes). – Google Project Hosting" . Consultado el 23 de febrero de 2014 .
- ↑ "Documentación de JSass" . jsass.readthedocs.io .
- ↑ "SassCompiler (API de Vaadin 7.0.7)" . Vaadin.com. 6 de junio de 2013. Archivado del original el 21 de abril de 2014. Consultado el 23 de febrero de 2014 .
- 1 2 3 4 5 Sass (Syntactically Awesome StyleSheets) 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 del original el 15 de diciembre de 2021. Consultado el 11 de julio de 2013 .
- 1 2 M. Catlin (30-04-2012). "libsass" . Blog de Moovweb. Archivado del original el 08-05-2013 . Recuperado el 11-07-2013 .
- ↑ A. Stacoviak y A. Thorp (26 de junio de 2013). "Sass, libsass, Haml y más con Hampton Catlin" . Archivado del original el 6 de agosto de 2013. Recuperado el 30 de julio de 2013 .
- ↑ D. Le Nouaille (2013-06-07). "Sassc y Bourbon" . Recuperado el 2013-07-11 .
- ↑ "Compatibilidad con Sass" . sass-compatibility.github.io . Archivado del original el 5 de diciembre de 2019. Consultado el 29 de noviembre de 2019 .
Lecturas adicionales
- Ndia, John Gichuki; Muketha, Geoffrey Muchiri; Omieno, Kelvin Kabeti (2019). "Métricas de complejidad para hojas de estilo en cascada Sassy" (PDF) . Baltic Journal of Modern Computing . 7 (4). doi : 10.22364/bjmc.2019.7.4.01 .
- Cederholm, Dan (2013). Sass para diseñadores web (PDF) . A Book Apart. ISBN 978-1-937557-13-3.
- Watts, Luke (2016). Dominando el Sass . Packt Publishing.
Enlaces externos
- Bibliotecas informáticas gratuitas
- Lenguajes de programación creados en 2006
- Ruby (lenguaje de programación)
- Software que utiliza la licencia MIT.
- Lenguajes de hojas de estilo