Esenciales de SASS

SASS es una extensión de CSS el cual, como la propia web indica, le otorga superpoderes. Te permite utilizar estilos futuros y te acomoda la hoja para que no te repitas. Puedes tener variables, hacer operaciones, importar otros CSS, incrustar estilos dentro de otros, ayudarte a calcular colores... y un largo etcétera.

Lo descubrí hace un par de años y se ha convertido en un indispensable para cualquier web que realizo. A continuación dejo un breve repaso de las características que espero que ayuden a adentrarse a los nuevos o a repasar a los veteranos.

Variables

SCSS

$fuenteGeneral: Helvetica, sans-serif;
$colorFondo: #333;

body {
   font-family: $fuenteGeneral;
   background-color: $colorFondo;
}

compila a...

CSS

body {
    font-family: Helvetica, sans-serif;
    background-color: #333;
}

Jerarquización

SCSS

nav {
    ul {
        margin: 0;
        padding: 0;
        list-style: none;
    }

    li { display: inline-block; }

    a {
        display: block;
        padding: 6px 12px;
        text-decoration: none;
    }
}

compila a...

CSS

nav ul {
    margin: 0;
    padding: 0;
    list-style: none;
}

nav li {
    display: inline-block;
}

nav a {
    display: block;
    padding: 6px 12px;
    text-decoration: none;
}

SCSS

div {
    text-decoration: none;
    &:hover {
        color: pink;
    }
}

compila a...

CSS

div {
    text-decoration: none;
}

div:hover {
    color: pink;
}

Importaciones

SCSS

Creamos un fichero con el nombre _reset.scss

html, body, ul, ol {
    margin: 0;
    padding: 0;
}

Otro con el nombre base.scss

@import 'reset';

body {
    font-size: 14px;
    background-color: #efefef;
}

Ambos se compilarán en...

CSS

html, body, ul, ol {
    margin: 0;
    padding: 0;
}

body {
    font-size: 14px;
    background-color: #efefef;
}

Mixins

SCSS

@mixin tamanyo($anchura) {
    width: $anchura;
}

.box {
    @include tamanyo(10px);
    height: 50px;
}

compila a...

CSS

.box {
    width: 10px;
    height: 50px;
}

Alternativa con dos parámetros de entrada.

SCSS

@mixin tamanyo($anchura, $altura) {
    width: $anchura;
    height: $altura;
}

Definiendo un valor por defecto.

@mixin tamanyo($anchura, $altura:50px) {
    width: $anchura;
    height: $altura;
}

Extender

SCSS

.redesSociales {
    border: 1px solid #ccc;
    padding: 10px;
    color: #333;
}

#twitter {
    @extend .redesSociales;
    background-image: url(../img/twitter.png);
}

compila a...

CSS

.redesSociales {
    border: 1px solid #ccc;
    padding: 10px;
    color: #333;
}

#twitter {
    border: 1px solid #ccc;
    padding: 10px;
    color: #333;
    background-image: url(../img/twitter.png);
}

Operadores

Valores que podemos utilizar:

+ (Sumar)
- (Restar)
* (Multiplicar)
/ (Dividir)
% (Resto de la división)

SCSS

#banner {
    float: left;
    width: 600px / 960px * 100%;
}

compila a...

CSS

#banner {
    float: left;
    width: 62.5%;
}

Desglose

SCSS

#banner {
    float: left;
    backgroud: {
        color: navy;
        size: cover;
        position: center;
    }
}

CSS

#banner {
    float: left;
    backgroud-color: navy;
    backgroud-size: cover;
    backgroud-position: center;
}

Funciones de ayuda

darken(#800, 20%) => #200
lighten(#800, 20%) => #e00
saturate(#855, 20%) => #9e3f3f
grayscale(#855) => #726b6b
complement(#855) => #588
Versión escritorio