Sass es un lenguaje que extiende CSS y que añade características tales como variables, anidación, mixins y más. Sass (y otros preprocesadores tales como [Less](http://lesscess.org/)) ayudan a los desarrolladores a escribir código mantenible y DRY (Don't Repeat Yourself).
Sass tiene dos sintaxis para elegir: SCSS, que usa la misma que CSS pero con las características añadidas de Sass, y Sass (la sintaxis original) que usa identación en vez de llaves y puntos y comas. Este tutorial está escrito en SCSS.
Si ya estás familiarizado con CSS3, vas a entender Sass relativamente rápido. Sass no ofrece nuevas propiedades de estilo, si no que añade herramientas para escribir tus CSS de manera más eficiente, haciendo su mantenimiento mucho más sencillo.
```scss
//Los comentarios en una sola línea son eliminados cuando Sass es compilado a CSS.
/* Los comentarios multi-línea se mantienen. */
/* Variables
============================== */
/* Puedes almacenar valores CSS (como un color) en una variable.
Usa el símbolo '$' para crear una variable */
$primary-color: #A3A4FF;
$secondary-color: #51527F;
$body-font: 'Roboto', sans-serif;
/* Puedes usar las variables a lo largo de tu hoja de estilos.
Ahora, si quieres cambiar el color, sólo lo tienes que hacer una vez. */
body {
background-color: $primary-color;
color: $secondary-color;
font-family: $body-font;
}
/* Este código compilará en: */
body {
background-color: #A3A4FF;
color: #51527F;
font-family: 'Roboto', sans-serif;
}
/* El resultado es mucho más mantenible que tener que cambiar el color
cada vez que aparece en la hoja de estilos. */
/* Directivas de control
============================== */
/* Sass permite usar @if, @else, @for, @while, y @each para controlar la
compilación de tu código en CSS. */
/* Los bloques @if/@else se comportan tal como es de esperar */
$debug: true !default;
@mixin debugmode {
@if $debug {
@debug "Modo debug activado";
display: inline-block;
}
@else {
display: none;
}
}
.info {
@include debugmode;
}
/* Si $debug es true, .info es mostrado; si es false entonces
no se muestra.
Nota: @debug mostrará información de depuración en la consola.
Es muy útil para ver el contenido de tus variables cuando estás depurando. */
.info {
display: inline-block;
}
/* @for es un bucle que itera un conjunto de valores.
Es particularmente útil para dar estilos a una colección de objetos.
Hay dos formas "through" y "to". El primero incluye el último valor
mientras que el segundo para antes del último valor. */
¿Alguna vez has pensado si Sass es un acrónimo o no? Seguramente no, pero te lo vamos a explicar de todas maneras. "Sass" es una palabra, no un acrónimo.
Como todo el mundo lo escribe como "SASS", el creador del lenguaje lo ha llamado de broma "Syntactically Awesome StyleSheets" (Hojas de estilo sintácticamente increíbles).
## Practica Sass
Si quieres probar Sass en tu navegador, prueba [SassMeister](http://sassmeister.com/).
Puedes usar cualquier sintaxis, o elegir en la configuración entre Sass y SCSS.
## Compatibilidad
Sass puede ser usado en cualquier proyecto mientras tengas un programa que lo compile en CSS. Quizás quieras comprobar si el CSS que estás usando es compatible con tus navegadores objetivo.
[QuirksMode CSS](http://www.quirksmode.org/css/) y [CanIUse](http://caniuse.com) son buenos recursos para comprobar la compatibilidad de navegadores.
## Más información
* [Documentación oficial (EN)](http://sass-lang.com/documentation/file.SASS_REFERENCE.html)
* [The Sass Way (EN)](http://thesassway.com/) tiene tutoriales (para principiantes y avanzandos) and artículos.