Iterazione in SASS
Questo articolo spiega come gestire l’iterazione in SASS.
Spiegheremo come eseguire l’iterazione in SASS passo dopo passo, utilizzando esempi di codice reali.
YouTube Video
Iterazione in SASS
L’iterazione in SASS aiuta ad evitare la duplicazione del codice e permette di creare stili flessibili e riutilizzabili.
Motivi per usare l’iterazione in SASS
Ci sono diversi vantaggi nell’utilizzare l’iterazione, come i seguenti:.
- Migliora la riusabilità del codice, rendendo facile generare stili con pattern simili.
- La manutenibilità viene migliorata, rendendo più facile modificare gli stili tutti insieme.
- Aiuta anche a ridurre gli errori.
Ad esempio, puoi generare stili per pulsanti con diversi colori o componenti con varie dimensioni tutto in una volta.
Sintassi utilizzata per l’iterazione in SASS
La principale sintassi usata per l’iterazione in SASS è la seguente:.
- Usando
@for, puoi eseguire iterazioni su un intervallo numerico specificato. - Usando
@each, puoi ciclare su liste o mappe nell’iterazione. - Usando
@while, puoi ciclare fino a quando non viene soddisfatta una certa condizione.
Iterazione usando @for
@for esegue un processo ripetitivo su un intervallo di numeri specificato.
Sintassi
1/*
2@for $i from <start> to <end> {
3 ...
4}
5
6@for $i from <start> through <end> {
7 ...
8}
9*/- Specifica i valori di inizio e fine per
<start>e<end>. Usandotosi esclude il valore finale, mentre conthroughlo si include.
Esempio
Il codice seguente genera automaticamente classi con un bordo che aumenta di 1px ogni volta.
1@for $i from 1 through 5 {
2 .border-#{$i} {
3 border-width: #{$i}px;
4 }
5}- Questo codice genera automaticamente classi per spessori del bordo che aumentano di 1px ciascuno. La direttiva
@forqui viene utilizzata per ciclare da 1 a 5.
CSS generato
1.border-1 {
2 border-width: 1px;
3}
4.border-2 {
5 border-width: 2px;
6}
7.border-3 {
8 border-width: 3px;
9}
10.border-4 {
11 border-width: 4px;
12}
13.border-5 {
14 border-width: 5px;
15}- Le classi da
.border-1a.border-5saranno generate in sequenza, con uno spessore del bordo che aumenta di 1px ciascuna.
Iterazione usando @each
@each esegue cicli usando liste o mappe. È utile quando si vogliono generare in modo efficiente classi con pattern ripetuti.
Sintassi
1/*
2@each $item in <list> {
3 ...
4}
5*/Esempio 1: Uso di una lista
Il codice seguente genera più classi per colore del testo.
1@each $color in ("red", "blue", "green") {
2 .text-#{$color} {
3 color: #{$color};
4 }
5}- Questo codice genera automaticamente classi di colore del testo per ogni colore presente nella lista. La direttiva
@eachviene usata per elaborare ogni valore della lista in sequenza.
CSS generato
1.text-red {
2 color: red;
3}
4.text-blue {
5 color: blue;
6}
7.text-green {
8 color: green;
9}- Quando il file SASS viene compilato in CSS, vengono generate classi come
.text-red,.text-bluee.text-greenper ogni colore della lista.
Esempio 2: Uso di una mappa
Usare una mappa permette di gestire coppie di chiavi e valori. Nel seguente esempio, i colori di sfondo dei pulsanti sono definiti usando una mappa.
1$colors: (
2 primary: #3498db,
3 success: #2ecc71,
4 danger: #e74c3c
5);
6
7@each $name, $hex in $colors {
8 .bg-#{$name} {
9 background-color: #{$hex};
10 }
11}CSS generato
1.bg-primary {
2 background-color: #3498db;
3}
4.bg-success {
5 background-color: #2ecc71;
6}
7.bg-danger {
8 background-color: #e74c3c;
9}- Quando il file SASS viene compilato in CSS, vengono generate classi come
.bg-primary,.bg-successe.bg-dangerper ogni chiave nella mappa.
Iterazione usando @while
@while continua il ciclo fintanto che la condizione è vera.
Sintassi
1/*
2@while <condition> {
3 ...
4}
5*/Esempio
Ad esempio, se vuoi aumentare la dimensione del font passo dopo passo, puoi scriverlo così:.
1$i: 1;
2
3@while $i <= 5 {
4 .font-#{$i} {
5 font-size: #{$i}rem;
6 }
7 $i: $i + 1;
8}- Puoi usare la direttiva
@whileper elaborazioni iterative quando aumenti la dimensione del font a passi. Utilizzando la variabile $i, le classi vengono generate automaticamente per valori da 1 a 5.
CSS generato
1.font-1 {
2 font-size: 1rem;
3}
4.font-2 {
5 font-size: 2rem;
6}
7.font-3 {
8 font-size: 3rem;
9}
10.font-4 {
11 font-size: 4rem;
12}
13.font-5 {
14 font-size: 5rem;
15}- Quando il file SASS viene compilato in CSS, vengono generate automaticamente classi con grandezza del font da 1rem a 5rem.
Esempio avanzato: combinare iterazione e annidamento
Combinare l’iterazione con la funzione di annidamento di SASS permette di generare stili ancora più avanzati.
Esempio
Di seguito un esempio in cui vengono definiti insieme colore di sfondo e colore hover dei pulsanti.
1@use "sass:color";
2
3$colors: (
4 primary: #3498db,
5 success: #2ecc71,
6 danger: #e74c3c
7);
8
9@each $name, $hex in $colors {
10 .btn-#{$name} {
11 background-color: $hex;
12 color: white;
13
14 &:hover {
15 background-color: color.scale($hex, $lightness: -10%);
16 }
17 }
18}- Combinando l'iterazione e il nesting in SASS, puoi generare i colori di sfondo e i colori hover dei pulsanti tutto in una volta sola. Per ogni colore nella mappa, viene creata una classe
.btn-e lo stile:hoverviene definito utilizzando il nesting.
CSS generato
1.btn-primary {
2 background-color: #3498db;
3 color: white;
4}
5.btn-primary:hover {
6 background-color: #2980b9;
7}
8.btn-success {
9 background-color: #2ecc71;
10 color: white;
11}
12.btn-success:hover {
13 background-color: #27ae60;
14}
15.btn-danger {
16 background-color: #e74c3c;
17 color: white;
18}
19.btn-danger:hover {
20 background-color: #c0392b;
21}- Quando converti il file SASS in CSS, il colore di sfondo e il colore al passaggio del mouse per ciascun pulsante vengono generati automaticamente e gli stili :hover vengono definiti collettivamente utilizzando l'annidamento.
Punti da considerare quando si usa l’iterazione
Tieni a mente i seguenti punti quando usi l’iterazione per scrivere codice più efficiente e leggibile.
-
Evita un annidamento troppo profondo Un annidamento eccessivo riduce la leggibilità, quindi mantienilo al minimo necessario.
-
Considera l’impatto sulle prestazioni Se vengono generate troppe classi tramite l’iterazione, il tuo CSS potrebbe diventare inutilmente grande.
-
Usa nomi di variabile appropriati Per variabili come
$io$item, usa nomi significativi per rendere il codice più comprensibile.
Riepilogo
Utilizzare l’iterazione in SASS permette di creare stili efficienti e facilmente manutenibili. In particolare, scegliere tra @for, @each e @while ti permette di generare CSS dinamico e flessibile.
Puoi seguire l'articolo sopra utilizzando Visual Studio Code sul nostro canale YouTube. Controlla anche il nostro canale YouTube.