In vielen Weblayouts ist es notwendig, unterschiedliche Ausprägungen einer bestimmten kosmetischen “Stellschraube” zu realisieren. So können etwa einzelne Akzentfarben je nach Unterseite, Kategorie oder Jahreszeit abweichen. Dies sorgt oftmals für unschönen Boilerplate-Code, welcher jedoch mit SASS/SCSS einfach eingespart werden kann.
Erst einmal ausführlich
Angenommen, je nach body
-Klasse sollen alle Artikel-Überschriften in der zweiten Ebene eine andere Farbe erhalten. Dies könnte mit reinem CSS zum Beispiel so aussehen:
|
|
Für diesen einen Fall fällt die Redundanz vielleicht nicht ins Gewicht, aber wenn sich solche Ausprägungen durch ein ganzes Layout ziehen, wird der Wunsch nach einer überschaubareren Alternative stärker.
Natürlich könnte man alle Definitionen, die zu einer einzelnen Variante gehören, in ein separates Stylesheet auslagern, damit werden jedoch die zueinander gehörigen Teile eines Stils auf mehrere Punkte verteilt, was die Übersicht und Wartung erschwert.
Maps to the rescue
In SASS/SCSS können Maps eingesetzt werden, um Collections umzusetzen.
Um die oben genannten Jahreszeiten mit ihren Akzentfarben zu definieren, kann eine Map wie folgt eingesetzt werden:
|
|
Um nun auf einen gewünschten Wert zuzugreifen, kann die Direktive map-get()
verwendet werden:
|
|
Damit ist allerdings noch nicht viel gewonnen, was die Prägnanz des Codes betrifft. Das ändert sich jedoch in dem Moment, in dem die Map mit einer Schleife durchlaufen wird.
|
|
Im fertigen CSS ergibt dies dann die Ausgabe, welche anfangs gezeigt wurde.