djr: nav li:first-of-type u. nav li:last-of-type

Beitrag lesen

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;
}