Mapas en SASS
Este artículo explica los mapas en SASS.
Explicaremos desde lo básico hasta el uso avanzado de los mapas en SASS, y proporcionaremos ejemplos prácticos.
YouTube Video
Mapas en SASS
¿Qué es un mapa en SASS?
Un mapa en SASS es una estructura de datos que contiene pares de clave y valor, similar a los objetos en JavaScript o los diccionarios en Python. Al usar mapas en SASS, puedes gestionar estilos complejos de manera concisa y mejorar la mantenibilidad.
Sintaxis básica de los mapas
Los mapas en SASS se definen usando ()
(paréntesis). La sintaxis es la siguiente:.
1$map-name: (
2 key1: value1,
3 key2: value2,
4 key3: value3
5);
Por ejemplo, para crear un mapa que gestione temas de color, puedes definirlo como se muestra a continuación:.
1$colors: (
2 primary: #3498db,
3 secondary: #2ecc71,
4 danger: #e74c3c
5);
Obtener valores de un mapa
En SASS, se utiliza la función map.get()
para obtener un valor de un mapa.
Ejemplo 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}
Salida:
1.button {
2 background-color: #3498db;
3}
- Este código obtiene el valor de color
primary
del mapa$colors
y lo aplica al color de fondo del botón.
Establecer claves y valores en un mapa
Usando la función map.set()
, puedes asignar un nuevo valor a una clave específica. Si la clave ya existe, su valor será sobrescrito.
Uso de Ejemplo
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 añade una clave
danger
al mapa y establece su valor como el color de fondo del botón.
Salida
1.button-danger {
2 background-color: #e74c3c;
3}
Eliminar claves de un mapa
Al usar la función map.remove()
, puedes eliminar una clave específica y su valor de un mapa.
Uso de Ejemplo
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 elimina la clave
danger
del mapa, por lo que el color de fondo debutton-danger
seránull
.
Salida
1.button-primary {
2 background-color: #3498db;
3}
Añadir claves y valores a un mapa
Usando la función map.merge()
, puedes agregar nuevas claves y valores a un mapa existente.
Uso de Ejemplo
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 añade una clave
danger
a un mapa de SASS existente y asigna su color como el color de fondo del botón.
Salida
1.button-danger {
2 background-color: #e74c3c;
3}
Añadir múltiples claves y valores a un mapa
Con la función map.merge()
, puedes agregar múltiples nuevas claves y valores a un mapa existente de una sola vez.
Uso de Ejemplo
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 añade varias claves y valores al mismo tiempo a un mapa de SASS existente.
Comprobar la existencia de claves en un mapa
La función map.has-key()
te permite verificar si una clave específica existe en un mapa.
Uso de Ejemplo
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
Obtener todas las claves o valores de un mapa
Obtener todas las claves
Usando la función map.keys()
, puedes obtener todas las claves.
1@use "sass:map";
2
3$colors: (
4 primary: #3498db,
5 secondary: #2ecc71
6);
7
8@debug map.keys($colors); // (primary, secondary)
Obtener todos los valores
Usando la función map.values()
, puedes obtener todos los valores.
1@use "sass:map";
2
3$colors: (
4 primary: #3498db,
5 secondary: #2ecc71
6);
7
8@debug map.values($colors); // (#3498db, #2ecc71)
Recorrer un mapa
En SASS, puedes usar la directiva @each
para recorrer un mapa.
Uso de Ejemplo
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 recorre cada clave y valor en un mapa de SASS y genera automáticamente una clase para cada color.
Salida
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}
Manejo de mapas anidados
Los mapas también pueden tener una estructura anidada. En este caso, utiliza funciones map.get()
anidadas.
Uso de Ejemplo
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 obtiene los colores de fondo y de texto para el tema
light
de un mapa anidado de SASS y los aplica albody
.
Salida
1body {
2 background-color: #ffffff;
3 color: #000000;
4}
Caso de uso de mapas: diseño responsivo
Al usar mapas, puedes gestionar fácilmente media queries y el diseño responsivo.
Uso de Ejemplo
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 un mapa de SASS para generar automáticamente clases de contenedor responsivas para cada punto de ruptura.
Salida
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}
Conclusión
Los mapas en SASS son una herramienta poderosa para organizar tu hoja de estilos, aumentando la flexibilidad y reutilización. Pueden usarse en muchos escenarios, como la gestión de valores, bucles y la implementación de diseño responsivo.
Puedes seguir el artículo anterior utilizando Visual Studio Code en nuestro canal de YouTube. Por favor, también revisa nuestro canal de YouTube.