Mapas no SASS
Este artigo explica mapas no SASS.
Vamos explicar do básico ao avançado o uso de mapas no SASS, além de fornecer exemplos práticos.
YouTube Video
Mapas no SASS
O que é um mapa no SASS?
Um mapa no SASS é uma estrutura de dados que armazena pares chave-valor, semelhante a objetos em JavaScript ou dicionários em Python. Ao usar mapas no SASS, você pode gerenciar estilos complexos de forma concisa e melhorar a manutenção.
Sintaxe básica dos mapas
Mapas no SASS são definidos usando ()
(parênteses). A sintaxe é a seguinte:.
1$map-name: (
2 key1: value1,
3 key2: value2,
4 key3: value3
5);
Por exemplo, para criar um mapa para gerenciar temas de cores, você pode defini-lo conforme mostrado abaixo:.
1$colors: (
2 primary: #3498db,
3 secondary: #2ecc71,
4 danger: #e74c3c
5);
Obtendo valores de um mapa
No SASS, você usa a função map.get()
para obter um valor de um mapa.
Exemplo de uso:
1@use "sass:map";
2
3$colors: (
4 primary: #3498db,
5 secondary: #2ecc71
6);
7
8.button {
9 background-color: map.get($colors, primary);
10}
Saída:
1.button {
2 background-color: #3498db;
3}
- Este código obtém o valor da cor
primary
do mapa$colors
e aplica como cor de fundo do botão.
Definindo chaves e valores em um mapa
Usando a função map.set()
, você pode atribuir um novo valor a uma chave especificada. Se a chave já existir, o seu valor será sobrescrito.
Exemplo de Uso
1@use "sass:map";
2
3$colors: (
4 primary: #3498db,
5 secondary: #2ecc71
6);
7
8// set danger color
9$updated-colors: map.set($colors, danger, #e74c3c);
10
11.button-danger {
12 background-color: map.get($updated-colors, danger);
13}
- Este código adiciona a chave
danger
ao mapa e define seu valor como a cor de fundo do botão.
Saída
1.button-danger {
2 background-color: #e74c3c;
3}
Removendo chaves de um mapa
Usando a função map.remove()
, você pode remover uma chave específica e seu valor de um mapa.
Exemplo de Uso
1@use "sass:map";
2
3$colors: (
4 primary: #3498db,
5 secondary: #2ecc71,
6 danger: #e74c3c
7);
8
9// remove danger color
10$reduced-colors: map.remove($colors, danger);
11
12.button-primary {
13 background-color: map.get($reduced-colors, primary);
14}
15
16.button-danger {
17 background-color: map.get($reduced-colors, danger);
18}
- Este código remove a chave
danger
do mapa, então a cor de fundo dobutton-danger
seránull
.
Saída
1.button-primary {
2 background-color: #3498db;
3}
Adicionando chaves e valores a um mapa
Usando a função map.merge()
, você pode adicionar novas chaves e valores a um mapa existente.
Exemplo de Uso
1@use "sass:map";
2
3$colors: (
4 primary: #3498db,
5 secondary: #2ecc71
6);
7
8$extended-colors: map.merge($colors, (danger: #e74c3c));
9
10.button-danger {
11 background-color: map.get($extended-colors, danger);
12}
- Este código adiciona a chave
danger
a um mapa SASS existente e define a sua cor como cor de fundo do botão.
Saída
1.button-danger {
2 background-color: #e74c3c;
3}
Adicionando várias chaves e valores a um mapa
Com a função map.merge()
, você pode adicionar várias novas chaves e valores a um mapa existente ao mesmo tempo.
Exemplo de Uso
1@use "sass:map";
2
3$colors: (
4 primary: #3498db,
5 secondary: #2ecc71
6);
7
8$extended-colors: map.merge($colors, (
9 danger: #e74c3c,
10 warning: #f39c12,
11 info: #8e44ad
12));
13
14.button-danger {
15 background-color: map.get($extended-colors, danger);
16}
- Este código adiciona várias chaves e valores ao mesmo tempo a um mapa SASS existente.
Verificando chaves em um mapa
A função map.has-key()
permite que você verifique se uma chave específica existe em um mapa.
Exemplo de Uso
1@use "sass:map";
2
3$colors: (
4 primary: #3498db,
5 secondary: #2ecc71
6);
7
8@debug map.has-key($colors, primary); // true
9@debug map.has-key($colors, danger); // false
Obtendo todas as chaves ou valores de um mapa
Obtendo todas as chaves
Usando a função map.keys()
, você pode obter todas as chaves.
1@use "sass:map";
2
3$colors: (
4 primary: #3498db,
5 secondary: #2ecc71
6);
7
8@debug map.keys($colors); // (primary, secondary)
Obtendo todos os valores
Usando a função map.values()
, você pode obter todos os valores.
1@use "sass:map";
2
3$colors: (
4 primary: #3498db,
5 secondary: #2ecc71
6);
7
8@debug map.values($colors); // (#3498db, #2ecc71)
Percorrendo um mapa
No SASS, você pode usar a diretiva @each
para percorrer um mapa.
Exemplo de Uso
1$colors: (
2 primary: #3498db,
3 secondary: #2ecc71,
4 danger: #e74c3c
5);
6
7@each $name, $color in $colors {
8 .color-#{$name} {
9 background-color: $color;
10 }
11}
- Este código percorre cada chave e valor de um mapa SASS e gera automaticamente uma classe para cada cor.
Saída
1.color-primary {
2 background-color: #3498db;
3}
4
5.color-secondary {
6 background-color: #2ecc71;
7}
8
9.color-danger {
10 background-color: #e74c3c;
11}
Trabalhando com mapas aninhados
Os mapas também podem ter uma estrutura aninhada. Nesse caso, use funções map.get()
aninhadas.
Exemplo de Uso
1@use "sass:map";
2
3$themes: (
4 light: (
5 background: #ffffff,
6 text: #000000
7 ),
8 dark: (
9 background: #000000,
10 text: #ffffff
11 )
12);
13
14body {
15 background-color: map.get(map.get($themes, light), background);
16 color: map.get(map.get($themes, light), text);
17}
- Este código obtém as cores de fundo e texto do tema
light
de um mapa SASS aninhado e as aplica aobody
.
Saída
1body {
2 background-color: #ffffff;
3 color: #000000;
4}
Caso de uso de mapas: Design Responsivo
Usando mapas, você pode gerenciar facilmente media queries e design responsivo.
Exemplo de Uso
1$breakpoints: (
2 small: 480px,
3 medium: 768px,
4 large: 1024px
5);
6
7@each $label, $size in $breakpoints {
8 @media (max-width: $size) {
9 .container-#{$label} {
10 width: 100%;
11 }
12 }
13}
- Este código usa um mapa SASS para gerar automaticamente classes de container responsivas para cada breakpoint.
Saída
1@media (max-width: 480px) {
2 .container-small {
3 width: 100%;
4 }
5}
6
7@media (max-width: 768px) {
8 .container-medium {
9 width: 100%;
10 }
11}
12
13@media (max-width: 1024px) {
14 .container-large {
15 width: 100%;
16 }
17}
Conclusão
Mapas SASS são uma ferramenta poderosa para organizar seu stylesheet, aumentando a flexibilidade e a reutilização. Eles podem ser usados em muitos cenários, como gerenciamento de valores, loops, e implementação de design responsivo.
Você pode acompanhar o artigo acima usando o Visual Studio Code em nosso canal do YouTube. Por favor, confira também o canal do YouTube.