+
SASS e Multiplos Temas
Aprendendo a aplicar varios temas no Angular
Entendendo um pouco sobre Folhas de Estilo CSS
CSS - Cascading Style Sheets (ou Folhas de estilo em cascata) - é a linguagem fundamental utilizada para descrever a apresentação de um documento HTML, permitindo definir cores, fontes, layouts e outras propriedades visuais.
Sintaxe
Resultado
body {
margin: 0;
}
.login {
min-height: 100vh;
background-color: #fa9d48;
display: flex;
justify-content: center;
align-items: center;
}
form {
width: 250px;
padding: 50px;
background-color: #fafafa;
border-radius: 8px;
display: flex;
flex-direction: column;
gap: 16px;
}
label {
display: flex;
justify-content: space-between;
font-family: Tahoma, sans-serif;
}O que e o SASS?
SASS é o superpoder que o CSS sempre quis ter. Ele te permite usar variáveis, aninhar seletores, criar mixins (uma espécie de função para CSS) e muito mais, o que deixa seu código mais limpo e fácil de manter. Ele nos ajuda a organizar melhor os estilos, economizando tempo e dor de cabeça - especialmente em projetos grandes.
Sintaxe
Resultado
$primary-color: #001514
$text-color: #C2D076
body
font-family: Arial, sans-serif
color: $primary-color
background-color: lighten($text-color, 90%)
.container
width: 80%
margin: 0 auto
.header
background-color: darken($primary-color, 10%)
padding: 20px
text-align: center
color: $text-colorCompilado
Tudo que escrevemos na sintaxe SASS precisa ser compilado para CSS normal, para que os navegadores consigam aplicar a folha de estilo.
Browser

Variáveis de aninhamento
Compilado CSS
$gap-s: 8px
$gap-m: 16px
$gap-l: 24px
$font-family-default: Arial, sans-serif
$color-primary: cornflowerblue
nav
ul
margin: 0
padding: 0
list-style: none
display: flex
gap: $gap-m
li
a
text-decoration: none
font-family: $font-family-default
color: $color-primarynav {
margin: 0;
padding: 0;
list-style: none;
display: flex;
gap: 16px;
}
nav li {
text-decoration: none;
font-family: Arial, sans-serif;
color: cornflowerblue;
}Mixins
Compilado CSS
$cor-principal: #3498db
$cor-cancelar: #e74c3c
@mixin botao-estiloso($cor)
padding: 10px 20px
border-radius: 5px
background-color: $cor
color: #ffffff
&:hover
background-color: darken($cor, 10%)
.botao-comprar
@include botao-estiloso($cor-principal)
.botao-cancelar
@include botao-estiloso($cor-cancelar).botao-comprar {
padding: 10px 20px;
border-radius: 5px;
background-color: #3498db;
color: #ffffff;
}
.botao-comprar:hover {
background-color: #217dbb;
}
.botao-cancelar {
padding: 10px 20px;
border-radius: 5px;
background-color: #e74c3c;
color: #ffffff;
}
.botao-cancelar:hover {
background-color: #d62c1a;
}Funções
Compilado CSS
@function area-do-circulo($raio)
$pi: 3.14159
@return $pi * $raio * $raio
.borda
border: area-do-circulo(5) * 1px solid #3498db
padding: 20px
margin: 20px
text-align: center
background-color: #f0f0f0
border-radius: 10px.borda {
border: 78.53975px solid #3498db;
padding: 20px;
margin: 20px;
text-align: center;
background-color: #f0f0f0;
border-radius: 10px;
}Heranças
Compilado CSS
.message
padding: 10px
border: 1px solid #ccc
color: #333333
.success
@extend .message
border-color: green
.error
@extend .message
border-color: red
.warning
@extend .message
border-color: orange.message, .warning, .error, .success {
padding: 10px;
border: 1px solid #ccc;
color: #333333;
}
.success {
border-color: green;
}
.error {
border-color: red;
}
.warning {
border-color: orange;
}Segue a arquitetura padrão de um projeto em SASS
sass/
|
|– base/
| |– _reset.scss # Reset/normalize
| |– _typography.scss # Typography rules
| ... # Etc…
|
|– components/
| |– _buttons.scss # Buttons
| |– _carousel.scss # Carousel
| |– _cover.scss # Cover
| |– _dropdown.scss # Dropdown
| ... # Etc…
|
|– layout/
| |– _navigation.scss # Navigation
| |– _grid.scss # Grid system
| |– _header.scss # Header
| |– _footer.scss # Footer
| |– _sidebar.scss # Sidebar
| |– _forms.scss # Forms
| ... # Etc…
|
|– pages/
| |– _home.scss # Home specific styles
| |– _contact.scss # Contact specific styles
| ... # Etc…
|
|– sass-utils/
| |– _variables.scss # Sass Variables
| |– _functions.scss # Sass Functions
| |– _mixins.scss # Sass Mixins
| |– _helpers.scss # Class & placeholders helpers
|
|– vendors/
| |– _bootstrap.scss # Bootstrap
| |– _jquery-ui.scss # jQuery UI
| ... # Etc…
|
|
`– style.scss # Primary Sass fileO que é SCSS ?
SCSS é uma forma de usar o SASS que se parece bastante com o CSS tradicional. Se você não foi muito com a cara da sintaxe original do SASS, que tem um estilo mais sucinto, o SCSS mantém a estrutura familiar do CSS, assim a transição fica bem mais tranquila.
Como vimos, o SASS utiliza uma sintaxe baseada em indentação, sem precisar de chaves {} e ;
Exemplo
Compilado CSS
$primary-color: #3498db;
body {
background-color: $primary-color;
font: 100% Helvetica, sans-serif;
}
h1 {
color: darken($primary-color, 80%);
font-size: 2em;
}body {
background-color: #3498db;
font: 100% Helvetica, sans-serif;
}
h1 {
color: black;
font-size: 2em;
}Funcionalidades do SASS adicionadas no CSS puro.
:root {
--primary-color: #3498db;
--secondary-color: #2ecc71;
--font-family: "Arial", sans-serif;
--padding: 10px;
--hover-opacity: 0.9;
}
body {
font-family: var(--font-family);
padding: var(--padding);
background-color: var(--primary-color);
color: #ffffff;
button {
background-color: var(--secondary-color);
color: #ffffff;
padding: var(--padding);
border: none;
border-radius: 5px;
&:hover {
background-color: var(--secondary-color);
opacity: var(--hover-opacity);
}
}
}Qual escolher?
Comparações SASS e SCSS
| Recurso | SASS | SCSS |
|---|---|---|
| Extensão de arquivo | .sass | .scss |
| Sintaxe | Sintaxe baseada em indentação, sem chaves ou ponto e vírgula. | Sintaxe semelhante ao CSS, com chaves e ponto e vírgula. |
| Compatibilidade | Requer uma sintaxe diferente, não é diretamente compatível com o CSS padrão. | Totalmente compatível com CSS padrão. |
| Uso | Preferido por aquelas pessoas que gostam de uma sintaxe mais simplificada. | Ideal para pessoas desenvolvedoras em transição do CSS. |
| Flexibilidade | Mais conciso e limpo para algumas pessoas desenvolvedoras. | Familiar para quem conhece CSS. |

Congrats
Referências
- Material Angular – Documentação oficial do Angular Material.
- Sass: Syntactically Awesome Stylesheets – Site oficial do pré-processador Sass.
- Curso de SASS na Alura – Curso online de SASS para estilização de sites.
Angular SASS
By Frank Lima
Angular SASS
- 156