SASS: CSS com Superpoderes

Instalando SASS

Primeiramente devemos instalar o Ruby, linguagem de programação que implementa SASS, e o gem, gerenciador de pacotes do Ruby. Fazemos ambas as instalações com o seguinte comando:


sudo apt install ruby

Em seguida, basta utilizar o gem para instalar o SASS com o seguinte comando:


sudo apt install ruby-sass

SASS X SCSS

O framework SASS comporta duas sintaxes para implementação: SASS, que utiliza identações para definir escopos, e SCSS que utiliza chaves e ponto-e-vírgula para definir escopos. Além da sintaxe ambos possuem uma clara diferença: arquivos SCSS são considerados arquivos CSS válidos, não necessitando de conversão; já arquivos SASS precisam ser convertidos para gerar arquivos CSS válidos.

Pré-Processamento

Nós escrevemos o código em SCSS e utilizamos o SASS-Watcher para automatizar a compilação de arquivos SCSS em arquivos CSS. Para tal, basta utilizar o comando abaixo:


sass --watch diretorios_arquivos_scss/

Variáveis


$variavel-cor: blue;

header{
     color: $variavel-cor;
}

footer {
     color: $variavel-cor;
}

button {
     background-color: $variavel-cor;
}

Escopos


main {
     background-color: blue;
     p {
          color: red;
     }
     article {
          background-color: yellow;
          p{
               color: green;
          }
     }
}

Importando e Lidando com Parciais

Nós podemos criar arquivos SCSS parciais, que irão compor um arquivo SCSS principal, usando a seguinte sintaxe em seu nome: _arquivo.scss. Arquivos parciais não precisam ser compilados, e de fato não o são !

Podemos importar esse arquivos parciais através da seguinte sintaxe:


@import "diretorio/_arquivo";

Mixins


@mixin fancy-border($size: 1px, $color: black) {
     border: $size dashed $color;
     border-radius: 5px;
}

header {
     @include fancy-border(10px, blue);
     background-color: yellow;
}

Herança


.message {
     font-size: 20px;
     border: 1px solid black;
}

.warning {
     @extend .message;
     color: yellow;
}

.error {
     @extend .message;
     color: red;
}

Operadores


$base-size: 20px;
$base-color: red;

p{
     font-size: $base-size / 2;
     color: $base-color - 10;
}

button {
     font-size: $base-size * 2;
     background-color: $base-color + 200;
}

Condicionais


@mixin text-style($size) {
    font-size: $size;

    @if $size > 20px {
         color: blue;
    } @elseif $size = 20px {
         color: red;
    } @else {
         color:green;
    }

}

header {
    @include text-style(21px);
}