Maps in SASS
Dit artikel legt maps in SASS uit.
We zullen de basis tot het geavanceerd gebruik van SASS maps uitleggen en praktische voorbeelden geven.
YouTube Video
Maps in SASS
Wat is een map in SASS?
Een map in SASS is een datastructuur die sleutel-waardeparen bevat, vergelijkbaar met objecten in JavaScript of woordenboeken in Python. Door maps in SASS te gebruiken, kun je complexe stijlen overzichtelijk beheren en de onderhoudbaarheid verbeteren.
Basis syntaxis van maps
Maps in SASS worden gedefinieerd met behulp van ()
(haakjes). De syntaxis is als volgt:.
1$map-name: (
2 key1: value1,
3 key2: value2,
4 key3: value3
5);
Om bijvoorbeeld een map aan te maken voor het beheren van kleurthema's, kun je die als volgt definiëren:.
1$colors: (
2 primary: #3498db,
3 secondary: #2ecc71,
4 danger: #e74c3c
5);
Waarden ophalen uit een map
In SASS gebruik je de map.get()
functie om een waarde uit een map te halen.
Voorbeeld van gebruik:
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}
Uitvoer:
1.button {
2 background-color: #3498db;
3}
- Deze code haalt de
primary
kleurwaarde uit de$colors
map en past deze toe op de achtergrondkleur van de knop.
Sleutels en waarden instellen in een map
Met behulp van de map.set()
functie kun je een nieuwe waarde toewijzen aan een bepaalde sleutel. Als de sleutel al bestaat, wordt de waarde overschreven.
Voorbeeldgebruik
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}
- Deze code voegt een
danger
-sleutel toe aan de map en stelt de waarde in als de achtergrondkleur van de knop.
Uitvoer
1.button-danger {
2 background-color: #e74c3c;
3}
Sleutels verwijderen uit een map
Met de map.remove()
functie kun je een bepaalde sleutel en waarde uit een map verwijderen.
Voorbeeldgebruik
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}
- Deze code verwijdert de
danger
-sleutel uit de map, zodat de achtergrondkleur vanbutton-danger
null
wordt.
Uitvoer
1.button-primary {
2 background-color: #3498db;
3}
Sleutels en waarden toevoegen aan een map
Met de map.merge()
functie kun je nieuwe sleutels en waarden aan een bestaande map toevoegen.
Voorbeeldgebruik
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}
- Deze code voegt een
danger
-sleutel toe aan een bestaande SASS-map en stelt de kleur in als de achtergrondkleur van de knop.
Uitvoer
1.button-danger {
2 background-color: #e74c3c;
3}
Meerdere sleutels en waarden toevoegen aan een map
Met de map.merge()
functie kun je meerdere nieuwe sleutels en waarden tegelijk aan een bestaande map toevoegen.
Voorbeeldgebruik
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}
- Deze code voegt meerdere sleutels en waarden tegelijk toe aan een bestaande SASS-map.
Controleren op sleutels in een map
Met de map.has-key()
functie kun je controleren of een bepaalde sleutel in een map bestaat.
Voorbeeldgebruik
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
Alle sleutels of waarden uit een map halen
Alle sleutels ophalen
Met de map.keys()
functie kun je alle sleutels ophalen.
1@use "sass:map";
2
3$colors: (
4 primary: #3498db,
5 secondary: #2ecc71
6);
7
8@debug map.keys($colors); // (primary, secondary)
Alle waarden ophalen
Met de map.values()
functie kun je alle waarden ophalen.
1@use "sass:map";
2
3$colors: (
4 primary: #3498db,
5 secondary: #2ecc71
6);
7
8@debug map.values($colors); // (#3498db, #2ecc71)
Door een map loopen
In SASS kun je de @each
directive gebruiken om door een map te loopen.
Voorbeeldgebruik
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}
- Deze code loopt door elke sleutel en waarde in een SASS-map en genereert automatisch een klasse voor elke kleur.
Uitvoer
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}
Omgaan met geneste maps
Maps kunnen ook een geneste structuur hebben. Gebruik in dat geval geneste map.get()
functies.
Voorbeeldgebruik
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}
- Deze code haalt de achtergrond- en tekstkleuren voor het
light
-thema uit een geneste SASS-map en past ze toe op debody
.
Uitvoer
1body {
2 background-color: #ffffff;
3 color: #000000;
4}
Gebruik van maps: Responsive design
Door maps te gebruiken kun je gemakkelijk media queries en responsive design beheren.
Voorbeeldgebruik
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}
- Deze code gebruikt een SASS-map om automatisch responsive containerklassen voor elk breakpoint te genereren.
Uitvoer
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}
Conclusie
SASS-maps zijn een krachtig hulpmiddel om je stylesheet te organiseren en de flexibiliteit en herbruikbaarheid te vergroten. Ze kunnen in veel scenario's worden gebruikt, zoals waardebeheer, loops en het implementeren van responsive design.
Je kunt het bovenstaande artikel volgen met Visual Studio Code op ons YouTube-kanaal. Bekijk ook het YouTube-kanaal.