Utilizando Map Structure do Sass

O Sass é um pré-processador usado para melhorar sua produtividade ao codificar CSS. Dentre as várias funcionalidades, existe uma chamada maps. O maps é como um array de variáveis. Ela guarda uma série de chaves com valores. A sintaxe é bastante comum, veja: A primeira vista se parece com Json, né? A ideia é que

O Sass é um pré-processador usado para melhorar sua produtividade ao codificar CSS. Dentre as várias funcionalidades, existe uma chamada maps.

O maps é como um array de variáveis. Ela guarda uma série de chaves com valores. A sintaxe é bastante comum, veja:

A primeira vista se parece com Json, né?

A ideia é que você consiga pegar o valor de qualquer chave que está dentro do seu mapa e usar em momentos onde você irá repetir bastante código.

Demo

No exemplo abaixo, vou mostrar uma situação muito comum ao desenvolvermos um site com variação de temas de cores. Na maneira normal, você faria um código basicamente assim:

Usando o mapa do SASS, a primeira coisa que faríamos seria separar as cores em variáveis, assim:

E faríamos uma função dessa forma:

O $tema seria cada uma das chaves, no nosso caso azul, vermelho e amarelo. O $cor seria cada um dos valores dos temas, ou seja, os valores hexadecimais. A função @each está dizendo assim: a cada valor dos temas (azul, vermelho, amarelo) que encontrar no mapa $cores, repita o bloco de código.

Isso resultaria no seguinte código:

Isso salva vidas. Agora vamos complicar mais. Normalmente um tema é composto de mais cores. Para isso o mapa vai ficar parecido isso:

O código do @each não mudará muito, mas precisaremos guardar cada uma dessas cores dentro de uma variável que será usada no código final. Ficará assim:

Explicando: a cada $tema (azul, vermelho e amarelo) que há no mapa $cores, ele vai gravar as variáveis $color1, $color2 e $color3. A função map-get vai pegar o valor específico de cada variável color1, color2 e color3 de cada tema e irá guardar. O código CSS fica assim:

Ele vai repetir o bloco acima uma vez para cada tema de cor. No nosso caso, 3 vezes: uma para azul, vermelho e amarelo.

Novamente: isso salva vidas.

A única coisa que você vai gerenciar depois são as variáveis para modificar ou inserir novas cores.

Veja abaixo um exemplo mais completo, mostrando o código final do CSS gerado:

O pessoal do Viget explorou outro problema para resolver. Na verdade, as implicações são diversas. A qualquer momento que você tiver um bloco de código repetitivo e que depende de muitas variações, o maps é indicado.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *