Iteration in SASS
Dieser Artikel erklärt, wie man mit Iterationen in SASS umgeht.
Wir erklären Schritt für Schritt, wie man in SASS Iterationen durchführt, und zeigen dabei echte Code-Beispiele.
YouTube Video
Iteration in SASS
Iteration in SASS hilft, Code-Duplikate zu vermeiden und ermöglicht die Erstellung flexibler und wiederverwendbarer Styles.
Gründe für die Verwendung von Iterationen in SASS
Es gibt mehrere Vorteile bei der Verwendung von Iterationen, wie zum Beispiel:.
- Die Wiederverwendbarkeit des Codes wird verbessert und ähnliche Style-Muster lassen sich leicht erzeugen.
- Die Wartbarkeit wird erhöht, da sich Styles einfacher auf einmal ändern lassen.
- Auch Fehler werden reduziert.
Zum Beispiel können Sie auf einmal Styles für Buttons mit verschiedenen Farben oder Komponenten mit mehreren Größen generieren.
Syntax für Iterationen in SASS
Die wichtigste Syntax für Iterationen in SASS ist wie folgt:.
- Mit
@forkönnen Sie Iterationen über einen festgelegten Zahlenbereich durchführen. - Mit
@eachkönnen Sie innerhalb einer Iteration über Listen oder Maps iterieren. - Mit
@whilekönnen Sie so lange iterieren, bis eine bestimmte Bedingung erfüllt ist.
Iteration mit @for
@for führt wiederholte Prozesse innerhalb eines angegebenen Zahlenbereichs aus.
Syntax
1/*
2@for $i from <start> to <end> {
3 ...
4}
5
6@for $i from <start> through <end> {
7 ...
8}
9*/- Geben Sie den Start- und Endwert für
<start>und<end>an. Mittowird der Endwert ausgeschlossen, währendthroughihn einschließt.
Beispiel
Der folgende Code erzeugt automatisch Klassen, bei denen die Rahmenbreite jeweils um 1px zunimmt.
1@for $i from 1 through 5 {
2 .border-#{$i} {
3 border-width: #{$i}px;
4 }
5}- Dieser Code erzeugt automatisch Klassen für Rahmenstärken, die jeweils um 1px zunehmen. Die
@for-Direktive wird hier verwendet, um von 1 bis 5 zu iterieren.
Erzeugtes CSS
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}- Die Klassen von
.border-1bis.border-5werden nacheinander erstellt, wobei jede Rahmenstärke um 1px zunimmt.
Iteration mit @each
@each iteriert über Listen oder Maps. Das ist nützlich, wenn Sie effizient wiederkehrende Klassen erzeugen möchten.
Syntax
1/*
2@each $item in <list> {
3 ...
4}
5*/Beispiel 1: Verwendung einer Liste
Der folgende Code erzeugt mehrere Klassen für Textfarben.
1@each $color in ("red", "blue", "green") {
2 .text-#{$color} {
3 color: #{$color};
4 }
5}- Dieser Code erzeugt automatisch für jede Farbe in der Liste eine Textfarb-Klasse. Mit der
@each-Direktive wird jeder Wert in der Liste nacheinander verarbeitet.
Erzeugtes CSS
1.text-red {
2 color: red;
3}
4.text-blue {
5 color: blue;
6}
7.text-green {
8 color: green;
9}- Nach dem Kompilieren zu CSS werden für jede Farbe in der Liste Klassen wie
.text-red,.text-blueund.text-greenerzeugt.
Beispiel 2: Verwendung einer Map
Mit einer Map können Sie Schlüssel-Wert-Paare verwalten. Im folgenden Beispiel werden Hintergrundfarben von Buttons mit Hilfe einer Map definiert.
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}Erzeugtes CSS
1.bg-primary {
2 background-color: #3498db;
3}
4.bg-success {
5 background-color: #2ecc71;
6}
7.bg-danger {
8 background-color: #e74c3c;
9}- Nach dem Kompilieren der SASS-Datei werden für jeden Schlüssel in der Map Klassen wie
.bg-primary,.bg-successoder.bg-dangererzeugt.
Iteration mit @while
@while führt die Schleife aus, solange die Bedingung wahr ist.
Syntax
1/*
2@while <condition> {
3 ...
4}
5*/Beispiel
Wenn Sie zum Beispiel die Schriftgröße schrittweise erhöhen wollen, können Sie das wie folgt schreiben:.
1$i: 1;
2
3@while $i <= 5 {
4 .font-#{$i} {
5 font-size: #{$i}rem;
6 }
7 $i: $i + 1;
8}- Sie können die
@while-Direktive verwenden, um die Schriftgröße schrittweise zu erhöhen. Durch die Verwendung der Variable $i werden Klassen automatisch für die Werte von 1 bis 5 generiert.
Erzeugtes CSS
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}- Nach dem Kompilieren der SASS-Datei werden automatisch Klassen mit Schriftgrößen von 1rem bis 5rem generiert.
Fortgeschrittenes Beispiel: Kombination von Iteration und Verschachtelung
Die Kombination von Iteration mit der Verschachtelungs-Funktion von SASS ermöglicht noch anspruchsvollere Stil-Generierungen.
Beispiel
Unten sehen Sie ein Beispiel, bei dem Hintergrund- und Hoverfarben für Buttons gemeinsam definiert werden.
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}- Durch die Kombination von Iterationen und SASS-Verschachtelung können Sie Schaltflächenhintergrundfarben und Hover-Farben auf einmal generieren. Für jede Farbe in der Map wird eine
.btn--Klasse erstellt und der:hover-Stil mithilfe von Verschachtelung definiert.
Erzeugtes CSS
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}- Wenn Sie die SASS-Datei in CSS konvertieren, werden die Hintergrundfarbe und die Hover-Farbe für jede Schaltfläche automatisch generiert, und die :hover-Stile werden mithilfe von Verschachtelung gemeinsam definiert.
Wichtige Hinweise zur Verwendung von Iterationen
Beachten Sie beim Verwenden von Iterationen die folgenden Punkte, um effizienteren und besser lesbaren Code zu schreiben.
-
Vermeiden Sie zu tiefe Verschachtelungen Zu starke Verschachtelung verringert die Lesbarkeit, daher sollten Sie diese aufs Nötigste beschränken.
-
Beachten Sie Performance-Auswirkungen Wenn durch Iterationen zu viele Klassen erzeugt werden, kann Ihr CSS unnötig groß werden.
-
Verwenden Sie sinnvolle Variablennamen Vergeben Sie bei Variablen wie
$ioder$itemmöglichst aussagekräftige Namen, um den Code verständlicher zu machen.
Zusammenfassung
Durch die Verwendung von Iterationen in SASS können Sie effiziente und wartbare Styles entwerfen. Insbesondere durch die gezielte Wahl zwischen @for, @each und @while können Sie dynamisches und flexibles CSS erzeugen.
Sie können den obigen Artikel mit Visual Studio Code auf unserem YouTube-Kanal verfolgen. Bitte schauen Sie sich auch den YouTube-Kanal an.