@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.

Probieren Sie es aus

Syntax

css
/* 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 Attribut-Selektoren einzuschränken, so dass sie nur Elemente innerhalb dieses Namespaces auswählen. Die @namespace-Regel ist im Allgemeinen nur nützlich, wenn man mit Dokumenten arbeitet, 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 vor allen anderen At-Regeln und Stildeklarationen in einem Stylesheet stehen.

@namespace kann verwendet werden, um den Standard-Namespace für das Stylesheet zu definieren. Wenn ein Standard-Namespace definiert ist, gelten alle universellen und Typ-Selektoren (aber nicht Attribut-Selektoren, siehe unten stehende Notiz) 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, stimmt dieser Selektor nur überein, wenn der Namespace und der Name des Elements oder Attributs übereinstimmt.

In HTML werden bekannte fremde Elemente automatisch Namespaces zugewiesen. Das bedeutet, dass HTML-Elemente so agieren, als ob sie sich im XHTML-Namespace (http://www.w3.org/1999/xhtml) befinden, auch wenn kein xmlns-Attribut irgendwo im Dokument vorhanden ist, und die <svg>- und <math>-Elemente werden ihren korrekten Namespaces zugewiesen (http://www.w3.org/2000/svg und http://www.w3.org/1998/Math/MathML, jeweils).

Hinweis: In XML hat ein Attribut keinen Namespace, es sei denn, es wird direkt auf diesem Attribut ein Präfix definiert (z.B., xlink:href). Mit anderen Worten, Attribute erben nicht den Namespace des Elements, auf dem sie sich befinden. Um dieses Verhalten zu spiegeln, findet der Standard-Namespace in CSS keine Anwendung auf 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 spezifizieren

css
@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

Siehe auch