@namespace
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Juli 2015.
@namespace ist eine at-rule, die XML-Namensräume definiert, die in einem CSS-Stylesheet verwendet werden sollen.
Probieren Sie es aus
@namespace svg url("http://www.w3.org/2000/svg"); a { color: orangered; text-decoration: underline dashed; font-weight: bold; } svg|a { fill: blueviolet; text-decoration: underline solid; text-transform: uppercase; } <p> <a href="#">This is an ordinary HTML link</a> </p> <svg width="250px" viewBox="0 0 250 20" xmlns="http://www.w3.org/2000/svg"> <a href="#"> <text x="0" y="15">This is a link created in SVG</text> </a> </svg> Syntax
/* Default namespace */ @namespace url("XML-namespace-URL"); @namespace "XML-namespace-URL"; /* Prefixed namespace */ @namespace prefix url("XML-namespace-URL"); @namespace prefix "XML-namespace-URL"; Beschreibung
Die definierten Namensräume können verwendet werden, um die universellen, Typen- und Attribut-Selektoren auf Elemente innerhalb dieses Namensraums zu beschränken. Die @namespace-Regel ist im Allgemeinen nur nützlich, wenn man mit Dokumenten arbeitet, die mehrere Namensräume enthalten – wie HTML mit eingebettetem SVG oder MathML oder XML, das mehrere Vokabulare mischt.
Alle @namespace-Regeln müssen allen @charset und @import-Regeln folgen und allen anderen At-Regeln und Stilerklärungen in einem Stylesheet vorangestellt sein.
@namespace kann verwendet werden, um den Standard-Namespace für das Stylesheet zu definieren. Wenn ein Standard-Namensraum definiert ist, gelten alle universellen und Typen-Selektoren (aber nicht Attribut-Selektoren, siehe Hinweis unten) nur für Elemente in diesem Namensraum.
Die @namespace-Regel kann auch verwendet werden, um ein Namenspräfix zu definieren. Wenn ein universeller, Typen- oder Attribut-Selektor mit einem Namenspräfix versehen ist, dann gilt dieser Selektor nur, wenn sowohl der Namensraum als auch der Name des Elements oder Attributs übereinstimmen.
In HTML werden bekannte Fremdelemente automatisch Namensräumen zugeordnet. Dies bedeutet, dass HTML-Elemente so agieren, als ob sie sich im XHTML-Namespace (http://www.w3.org/1999/xhtml) befinden, selbst wenn es kein xmlns-Attribut irgendwo im Dokument gibt, und die <svg>- und <math>-Elemente werden ihren richtigen Namensräumen zugeordnet (http://www.w3.org/2000/svg und http://www.w3.org/1998/Math/MathML, jeweils).
Hinweis: In XML hat ein Attribut, sofern nicht direkt ein Präfix darauf definiert ist (z.B., xlink:href), keinen Namensraum. Mit anderen Worten, Attribute erben nicht den Namensraum des Elements, auf dem sie sich befinden. Um dieses Verhalten zu unterstützen, gilt der Standard-Namensraum in CSS nicht für Attribut-Selektoren.
Formale Syntax
@namespace =
@namespace <namespace-prefix>? [ <string> | <url> ] ;
<namespace-prefix> =
<ident>
Beispiele
>Festlegung von Standard- und Präfix-Namensräumen
@namespace url("http://www.w3.org/1999/xhtml"); @namespace svg url("http://www.w3.org/2000/svg"); /* This matches all XHTML <a> elements, as XHTML is the default unprefixed namespace */ a { } /* This matches all SVG <a> elements */ svg|a { } /* This matches both XHTML and SVG <a> elements */ *|a { } Spezifikationen
| Specification |
|---|
| CSS Namespaces Module Level 3> # declaration> |
Browser-Kompatibilität
Loading…