As folhas de estilos foram crescendo e ficando mais complexas ao longo dos desenvolvimentos, dificultando a manutenção do código. Para resolver esse problema surgiu os pré-processadores.
- Programa para a construção de códigos CSS a partir de outra sintaxe semelhante ou quase idêntica ao CSS.
- Permite adicionar funções que não são possíveis em CSS puro, como mixins, nesting, seletores, herança, etc.
- É possível usar a própria sintaxe CSS mas também pode escrever a folha de estilo com algumas particularidades, como não usar chaves e colocar elementos dentro um do outro, criando o nesting. Essas funções facilitam a manutenção e aumentam a legibilidade do CSS. As principais vantagens são:
- Aninhamento de código;
- Capacidade de usar variáveis;
- Capacidade de criar mixins;
- Capacidade de usar operações matemáticas/lógicas;
- Capacidade de usar loops e condições;
- Junção de vários arquivos; Os principais pré-processadores são: Sass, Less e Stylus.
Syntactically Awesome Style Sheets - Folhas de Estilo Sintaticamente Impressionantes.
- É uma ferramenta de software que cria arquivos CSS, quanto uma linguagem que adiciona recursos que não existem no CSS.
- Vantagens:
- Variáveis
- Classes Aninhadas (facilitando a visualização da hierarquia)
- Partial de arquivos (quebra de arquivos em diversos arquivos)
- Importação
- Mixins (reaproveitamento de estilos)
- Operações matemáticas
- Scss
- Extensão
.scss
- Semelhante ao CSS, com super poderes
- Extensão
- Sass
- Extensão
.sass
- Suporta todos os recursos do SCSS
- A sintaxe recuada era a sintaxe original do Sass
- Usa espaço em vez de chaves e ponto e vírgula
- Extensão
- Como o Sass funciona?
- Código sass -> traduz para o CSS -> navegador faz a leitura
Nesting
- Ao invés de repetir os mesmos seletores, é possível criar uma regra de aninhamento, onde é combinado automaticamente o seletor da regra externa com o da regra interna.
nav {
ul {
margin: 0;
padding: 0;
list-style: none;
}
}
- É possível lidar com lista de seletores(seletores separados por vírgula).
.alert, .warning {
ul, p {
padding-bottom: 0;
}
}
- Também é possível combinar seletores; coloca o combinador no final do seletor externo, no ínicio do seletor interno ou até mesmo sozinho entre os dois.
ul > {
li {
list-style-type: none;
}
}
Parent
- É possível usar seletores de forma mais complexo, como o seletor pai, &, é um seletor especial inventado pelo Sass, usado para adicionar pseudoclasse ou adicionar um seletor antes do pai.
.alert {
margin-left: 0;
&:hover {
font-weight: bold;
}
}
- É possível usar o seletor pai para adiciona sufixos extrras ao seletor externo.
.accordion {
max-width: 600px;
&__copy {
display: none;
}
}
Interpolation
- A interpolação serve para injetar valores de expressões como variáveis e chamadas de função em seus seletores. Isso é particularmente útil quando está utilizando mixins, pois permite criar seletores a partir de parâmetros que os usuários passam.
@mixin define-emoji($name, $glyph) {
span.emoji-#{$name} {
font-family: IconFont;
font-variant: normal;
font-weight: normal;
content: $glyph;
}
}
@include define-emoji("women-holding-hands", "👭");
Variáveis
- É possível criar variáveis para guardar principalmente cores, fontes, e o que for necessário.
- As variáveis suportam o conceito de escopo.
Mixins
- É um bloco de código projetado para executar uma tarefa específica e pode conter uma ou mais instruções, tornando o código mais fácil para manter, editar e modificar.
- Um mixin deve possui um nome, da mesma forma que uma variável ou uma função, os mixins precisam de um nome para ter uma referência e poderem ser chamados quando forem utilizados.
- Para utilizar um mixin é preciso da At Rule @include, e do nome do mixin que foi atribuído na criação.
Palavras reservadas
@use
: Carrega mixins, functions e variáveis de outras folhas de estilos Sass e combina o CSS de diversas folhas de estilo juntos.@forward
: Carrega uma folha de estilo Sass e torna os mixis, functions e variáveis disponíveis quando a folha de estilo é carregada pela regra do@use
.@import
: Estende as regras de CSS para carregar styles, functions e variáveis de outras folhas de estilo@mixins
e@include
- facilitam a reutilização de trechos de código.@function
: Define funções customizadas que podem ser utilizadas em expressões.@extend
: Permite que os seletores herdem estilos uns dos outros.@at-root
: Coloca estilos dentro dele na raiz do documento CSS.@error
: Faz com que a compilação falhe com uma mensagem de erro.@warn
: Imprime um aviso sem parar totalmente a compilação.@debug
: Imprime uma mensagem para fins de debuggin.
Import
- A importação é um processo pelo qual muitos arquivos são transformados em poucos arquivvos. O Sass tem um pequeno truque pelo qual as folhas de estilo menores são importadas para a maior à medida que ela é compilada em CSS.
- Ao digitar
@import
, seguido pelo nome do arquivo Sass que deseja importar, você pode misturar arquivos Sass e Scss à vontade com importações.
@import "nome_do_arquivo";
- Por padrão, o compilador Sass gera um arquivo CSS de todos os seus arquivos .scss - para isso não ocorrer, deve iniciar o nome do arquivo .scss com um underline.
If/Else Assim como em linguagens de programação, o sass possui as condicionais if e else
@if
- O padrão de escrita é
@if <expression> { ... }
, que controla se seu bloco é avaliado ou não (incluindo a emissão de qualquer estilo como CSS). A expressão geralmente retorna true ou false - se a expressão retornar true, o bloco será executado e, se a expressão retornar false, não será executado.
@else
- Já no caso do else, escrita é
@else { ... }
. O bloco desta regra é avaliado se a @if retornar falso.