Haben die Namespaces in bestimmten Umgebungen eine Notwendigkeit?
Es ist "Geschmackssache" ob man mit Namespaces in CSS arbeiten will. Ich rate Vor- und Nachteile abzuwägen.
Ein Beispiel:
Ergänze im obigem Code
a > * {
border: 2px solid orange;
}
Vergleiche nun das Ergebnis mit / ohne Namespaces.
Richtig interessant wird ein CSS-Namespace für in-HTML-SVG bei CSS-Resets unter Nutzung des all
-Property.
.module {
all: revert;
}
.module * {
all: unset;
}
Aber nicht nur der Universalselektor, sondern alle Selektoren spielen eine Rolle. Das a
-Element kommt sowohl in HTML, als auch in SVG vor. Auch Attribute, IDs oder Klassennamen können sowohl im HTML, als auch im SVG-Abschnitt des Dokumentes vorkommen.
Um die Selektorspezifität gering zu halten bzw. Style-Überschreibungen zu vermeiden, können sich Namespaces lohnen.
a {
outline: 2px solid red;
}
svg a {
outline: none;
}
@namespace url('http://www.w3.org/1999/xhtml');
@namespace svg url('http://www.w3.org/2000/svg');
a {
outline: 2px solid red;
}