@namespace
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
@namespace
ist eine At-Regel, die XML-Namespaces definiert, die in einem CSS-Stylesheet verwendet werden sollen.
Probieren Sie es aus
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 Namespaces können verwendet werden, um die universellen, Typen- und Attribut-Selektoren innerhalb eines Selektors auf Elemente innerhalb dieses Namespaces zu beschränken. Die @namespace
-Regel ist im Allgemeinen nur dann nützlich, wenn man mit Dokumenten zu tun hat, die mehrere Namespaces enthalten – z. B. HTML mit eingebettetem SVG oder MathML, oder XML, das mehrere Vokabulare mischt.
Alle @namespace
-Regeln müssen alle @charset
- und @import
-Regeln folgen und allen anderen At-Regeln sowie Stil-Deklarationen in einem Stylesheet vorausgehen.
@namespace
kann verwendet werden, um den Standard-Namespace für das Stylesheet zu definieren. Wenn ein Standard-Namespace definiert ist, gelten alle universellen und Typen-Selektoren (aber nicht Attribut-Selektoren, siehe Hinweis unten) nur für Elemente in diesem Namespace.
Die @namespace
-Regel kann auch verwendet werden, um ein Namespace-Präfix zu definieren. Wenn ein universeller, Typ- oder Attribut-Selektor mit einem Namespace-Präfix versehen ist, entspricht dieser Selektor nur, wenn sowohl der Namespace als auch der Name des Elements oder Attributs übereinstimmt.
In HTML werden bekannte Foreign Elements automatisch Namespaces zugewiesen. Das bedeutet, dass HTML-Elemente so behandelt werden, als ob sie sich im XHTML-Namespace (http://www.w3.org/1999/xhtml
) befinden, selbst wenn es im Dokument kein xmlns
-Attribut gibt, und die <svg>
- und <math>
-Elemente ihre entsprechenden Namespaces (http://www.w3.org/2000/svg
und http://www.w3.org/1998/Math/MathML
) erhalten.
Hinweis:
In XML hat, sofern nicht direkt auf einem Attribut ein Präfix definiert ist (z. B. xlink:href
), dieses Attribut keinen Namespace. Anders ausgedrückt, Attribute erben den Namespace des Elements, auf dem sie sich befinden, nicht. Um dieses Verhalten nachzubilden, gilt der Standard-Namespace in CSS nicht für Attribut-Selektoren.
Formale Syntax
@namespace =
@namespace <namespace-prefix>? [ <string> | <url> ] ;
<namespace-prefix> =
<ident>
<url> =
<url()> |
<src()>
<url()> =
url( <string> <url-modifier>* ) |
<url-token>
<src()> =
src( <string> <url-modifier>* )
Beispiele
Standard- und Präfix-Namespaces festlegen
@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
Report problems with this compatibility data on GitHubdesktop | mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
@namespace |
Legend
Tip: you can click/tap on a cell for more information.
- Full support
- Full support