Maps in SASS
Dieser Artikel erklärt Maps in SASS.
Wir erklären die Grundlagen bis zur fortgeschrittenen Verwendung von SASS-Maps und bieten praktische Beispiele.
YouTube Video
Maps in SASS
Was ist eine Map in SASS?
Eine Map in SASS ist eine Datenstruktur, die Schlüssel-Wert-Paare enthält, ähnlich wie Objekte in JavaScript oder Dictionaries in Python. Durch die Verwendung von Maps in SASS können Sie komplexe Styles prägnant verwalten und die Wartbarkeit verbessern.
Grundlegende Syntax von Maps
Maps in SASS werden mit ()
(Klammern) definiert. Die Syntax ist wie folgt:.
1$map-name: (
2 key1: value1,
3 key2: value2,
4 key3: value3
5);
Um beispielsweise eine Map für die Verwaltung von Farbthemen zu erstellen, können Sie sie wie unten gezeigt definieren:.
1$colors: (
2 primary: #3498db,
3 secondary: #2ecc71,
4 danger: #e74c3c
5);
Werte aus einer Map abrufen
In SASS verwenden Sie die Funktion map.get()
, um einen Wert aus einer Map abzurufen.
Anwendungsbeispiel:
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}
Ausgabe:
1.button {
2 background-color: #3498db;
3}
- Dieser Code ruft den
primary
-Farbwert aus der$colors
-Map ab und weist ihn der Hintergrundfarbe des Buttons zu.
Schlüssel und Werte in einer Map setzen
Mit der Funktion map.set()
können Sie einem bestimmten Schlüssel einen neuen Wert zuweisen. Wenn der Schlüssel bereits existiert, wird sein Wert überschrieben.
Beispielhafte Verwendung
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}
- Dieser Code fügt der Map einen
danger
-Schlüssel hinzu und setzt dessen Wert als Hintergrundfarbe des Buttons.
Ausgabe
1.button-danger {
2 background-color: #e74c3c;
3}
Schlüssel aus einer Map entfernen
Durch die Verwendung der Funktion map.remove()
können Sie einen bestimmten Schlüssel und dessen Wert aus einer Map entfernen.
Beispielhafte Verwendung
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}
- Dieser Code entfernt den
danger
-Schlüssel aus der Map, sodass die Hintergrundfarbe vonbutton-danger
null
ist.
Ausgabe
1.button-primary {
2 background-color: #3498db;
3}
Schlüssel und Werte zu einer Map hinzufügen
Mit der Funktion map.merge()
können Sie einer vorhandenen Map neue Schlüssel und Werte hinzufügen.
Beispielhafte Verwendung
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}
- Dieser Code fügt einer bestehenden SASS-Map einen
danger
-Schlüssel hinzu und setzt dessen Wert als Hintergrundfarbe des Buttons.
Ausgabe
1.button-danger {
2 background-color: #e74c3c;
3}
Mehrere Schlüssel und Werte zu einer Map hinzufügen
Mit der Funktion map.merge()
können Sie einer vorhandenen Map gleichzeitig mehrere neue Schlüssel und Werte hinzufügen.
Beispielhafte Verwendung
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}
- Dieser Code fügt einer bestehenden SASS-Map gleichzeitig mehrere Schlüssel und Werte hinzu.
Schlüssel in einer Map prüfen
Mit der Funktion map.has-key()
können Sie prüfen, ob ein bestimmter Schlüssel in einer Map existiert.
Beispielhafte Verwendung
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 Schlüssel oder Werte aus einer Map abrufen
Alle Schlüssel abrufen
Mit der Funktion map.keys()
können Sie alle Schlüssel abrufen.
1@use "sass:map";
2
3$colors: (
4 primary: #3498db,
5 secondary: #2ecc71
6);
7
8@debug map.keys($colors); // (primary, secondary)
Alle Werte abrufen
Mit der Funktion map.values()
können Sie alle Werte abrufen.
1@use "sass:map";
2
3$colors: (
4 primary: #3498db,
5 secondary: #2ecc71
6);
7
8@debug map.values($colors); // (#3498db, #2ecc71)
Durch eine Map iterieren
In SASS können Sie die Direktive @each
verwenden, um durch eine Map zu iterieren.
Beispielhafte Verwendung
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}
- Dieser Code durchläuft jeden Schlüssel und Wert in einer SASS-Map und generiert automatisch eine Klasse für jede Farbe.
Ausgabe
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}
Arbeiten mit verschachtelten Maps
Maps können auch eine verschachtelte Struktur haben. In diesem Fall verwenden Sie verschachtelte map.get()
-Funktionen.
Beispielhafte Verwendung
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}
- Dieser Code holt sich die Hintergrund- und Textfarben für das
light
-Theme aus einer verschachtelten SASS-Map und weist sie dembody
zu.
Ausgabe
1body {
2 background-color: #ffffff;
3 color: #000000;
4}
Map-Anwendungsfall: Responsive Design
Durch die Verwendung von Maps können Sie Media Queries und Responsive Design einfach verwalten.
Beispielhafte Verwendung
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}
- Dieser Code nutzt eine SASS-Map, um automatisch responsive Container-Klassen für jeden Breakpoint zu generieren.
Ausgabe
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}
Fazit
SASS-Maps sind ein leistungsstarkes Werkzeug zum Organisieren Ihrer Stylesheets und erhöhen die Flexibilität sowie Wiederverwendbarkeit. Sie können in vielen Szenarien verwendet werden, wie z. B. Wertverwaltung, Iteration und Implementierung von Responsive Design.
Sie können den obigen Artikel mit Visual Studio Code auf unserem YouTube-Kanal verfolgen. Bitte schauen Sie sich auch den YouTube-Kanal an.