@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, Typ- und Attributselektoren auf Elemente innerhalb dieses Namespaces zu beschränken. Die @namespace
-Regel ist im Allgemeinen nur nützlich, wenn Sie mit Dokumenten arbeiten, die mehrere Namespaces 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 Stildeklarationen 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 Typselektoren (aber nicht Attributselektoren, 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 Attributselektor mit einem Namespace-Präfix versehen ist, stimmt dieser Selektor nur überein, wenn der Namespace und der Name des Elements oder Attributs übereinstimmen.
In HTML werden bekannte fremde Elemente automatisch Namespaces zugewiesen. Dies bedeutet, dass HTML-Elemente so agieren, als ob sie zum XHTML-Namespace (http://www.w3.org/1999/xhtml
) gehören, selbst wenn im Dokument kein xmlns
-Attribut vorhanden ist, und dass die <svg>
und <math>
Elemente ihre entsprechenden Namespaces zugewiesen bekommen (http://www.w3.org/2000/svg
und http://www.w3.org/1998/Math/MathML
).
Hinweis:
In XML hat ein Attribut, sofern ein Präfix nicht direkt auf dem Attribut definiert ist (z.B., xlink:href
), keinen Namespace. Mit anderen Worten erben Attribute nicht den Namespace des Elements, auf dem sie sich befinden. Um dieses Verhalten nachzubilden, gilt der Standard-Namespace in CSS nicht für Attributselektoren.
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äfixierte 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
BCD tables only load in the browser