Mappe in SASS
Questo articolo spiega le mappe in SASS.
Spiegheremo le basi e l'uso avanzato delle mappe in SASS, fornendo esempi pratici.
YouTube Video
Mappe in SASS
Che cos'è una mappa in SASS?
Una mappa in SASS è una struttura dati che contiene coppie chiave-valore, simile agli oggetti in JavaScript o ai dizionari in Python. Usando le mappe in SASS, puoi gestire stili complessi in modo conciso e migliorare la manutenibilità.
Sintassi di base delle mappe
Le mappe in SASS sono definite usando () (parentesi). La sintassi è la seguente:.
1$map-name: (
2 key1: value1,
3 key2: value2,
4 key3: value3
5);Ad esempio, per creare una mappa per gestire i temi dei colori, puoi definirla come segue:.
1$colors: (
2 primary: #3498db,
3 secondary: #2ecc71,
4 danger: #e74c3c
5);Ottenere valori da una mappa
In SASS si usa la funzione map.get() per recuperare un valore da una mappa.
Esempio d'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}Output:
1.button {
2 background-color: #3498db;
3}- Questo codice prende il valore del colore
primarydalla mappa$colorse lo applica come colore di sfondo del pulsante.
Impostare chiavi e valori in una mappa
Utilizzando la funzione map.set(), puoi assegnare un nuovo valore a una chiave specifica. Se la chiave esiste già, il suo valore verrà sovrascritto.
Esempio di utilizzo
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}- Questo codice aggiunge una chiave
dangeralla mappa e imposta il suo valore come colore di sfondo del pulsante.
Output
1.button-danger {
2 background-color: #e74c3c;
3}Rimuovere chiavi da una mappa
Utilizzando la funzione map.remove(), puoi rimuovere una specifica chiave e il suo valore da una mappa.
Esempio di utilizzo
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}- Questo codice rimuove la chiave
dangerdalla mappa, quindi il colore di sfondo dibutton-dangersarànull.
Output
1.button-primary {
2 background-color: #3498db;
3}Aggiungere chiavi e valori a una mappa
Utilizzando la funzione map.merge(), puoi aggiungere nuove chiavi e valori a una mappa esistente.
Esempio di utilizzo
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}- Questo codice aggiunge una chiave
dangera una mappa SASS esistente e imposta il suo colore come colore di sfondo del pulsante.
Output
1.button-danger {
2 background-color: #e74c3c;
3}Aggiungere più chiavi e valori a una mappa
Con la funzione map.merge() puoi aggiungere più nuove chiavi e valori a una mappa esistente contemporaneamente.
Esempio di utilizzo
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}- Questo codice aggiunge più chiavi e valori contemporaneamente a una mappa SASS esistente.
Controllare la presenza di chiavi in una mappa
La funzione map.has-key() ti permette di verificare se una specifica chiave esiste in una mappa.
Esempio di utilizzo
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); // falseOttenere tutte le chiavi o i valori da una mappa
Ottenere tutte le chiavi
Utilizzando la funzione map.keys(), puoi recuperare tutte le chiavi.
1@use "sass:map";
2
3$colors: (
4 primary: #3498db,
5 secondary: #2ecc71
6);
7
8@debug map.keys($colors); // (primary, secondary)Ottenere tutti i valori
Utilizzando la funzione map.values(), puoi recuperare tutti i valori.
1@use "sass:map";
2
3$colors: (
4 primary: #3498db,
5 secondary: #2ecc71
6);
7
8@debug map.values($colors); // (#3498db, #2ecc71)Iterare su una mappa
In SASS puoi usare la direttiva @each per iterare su una mappa.
Esempio di utilizzo
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}- Questo codice itera su ogni chiave e valore di una mappa SASS e genera automaticamente una classe per ogni colore.
Output
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}Gestire mappe annidate
Le mappe possono anche avere una struttura annidata. In questo caso, utilizza funzioni map.get() annidate.
Esempio di utilizzo
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}- Questo codice ottiene i colori di sfondo e del testo per il tema
lightda una mappa SASS annidata e li applica albody.
Output
1body {
2 background-color: #ffffff;
3 color: #000000;
4}Esempio di utilizzo delle mappe: Responsive Design
Utilizzando le mappe, puoi gestire facilmente le media query e il responsive design.
Esempio di utilizzo
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}- Questo codice utilizza una mappa SASS per generare automaticamente classi container responsive per ogni breakpoint.
Output
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}Conclusione
Le mappe SASS sono uno strumento potente per organizzare il tuo foglio di stile, aumentando flessibilità e riutilizzabilità. Possono essere utilizzate in molti scenari, come la gestione dei valori, i cicli e l'implementazione del responsive design.
Puoi seguire l'articolo sopra utilizzando Visual Studio Code sul nostro canale YouTube. Controlla anche il nostro canale YouTube.