Dit artikel heeft een redactionele beoordeling nodig. Hoe u kunt helpen.
Samenvatting
@namespace
is een at-rule welke XML namespaces definieert zodat deze gebruikt kunnen worden in een CSS style sheet. De gedefinieerde namespaces kunnen gebruikt worden om de universal, type, en attribute selectors alleen elementen binnen de namespace te laten selecteren. De @namespace
regel heeft in het algemeen alleen toegevoegde waarde wanneer deze toegepast wordt in documenten welke meerdere namespaces hebben—zoals HTML5 met inline SVG of MathML, of XML met meerdere gebruikte woordenlijsten.
Elke @namespace
regel moet alle @charset en @import regels volgen, en moet vóór alle andere at-rules en style declarations staan in een style sheet.
@namespace
kan gebruikt worden om de standaard namespace vast te leggen voor een style sheet. Wanneer een standaard namespace is vastgelegd, gelden alle universele en type selectors (maar geen attribute selectors, zie de opmerking onderaan) alleen voor de elementen binnen de standaard namespace.
De @namespace
regel kan ook gebruikt worden om een namespace prefix vast te leggen. Wanneer een universele, type of attribute selector wordt voorafgegaan met een namespace, dan geldt deze selector alleen wanneer de namespaceen de naam van het element of attribute matchen.
In HTML5 worden namespaces automatisch toegepast op bekende foreign elements. Dit zorgt ervoor dat HTML elementen zich gedragen alsof ze in de XHTML namespace zijn (https://www.w3.org/1999/xhtml
), zelfs als er geen xmlns
attribuut in het document staat, en de<svg> en <math> elementen worden toegewezen aan hun bijbehorende namespaces (https://www.w3.org/2000/svg
en https://www.w3.org/1998/Math/MathML
).
Note: In XML heeft een attribuut geen namespace, behalve als er een prefix op een attribuut is vastgelegd (bijv., xlink:href
). In andere woorden, attributen nemen de namespace van het element waarop ze staan niet over. Om dit gedrag na te bootsen geldt de standaard namespace in CSS niet voor attribuut selectors.
Syntaxis
/* Standaard namespace */ @namespace url(XML-namespace-URL); @namespace "XML-namespace-URL"; /* Prefixed namespace */ @namespace prefix url(XML-namespace-URL); @namespace prefix "XML-namespace-URL";
Formele syntaxis
@namespace <namespace-prefix>? [ <string> | <uri> ];where
<namespace-prefix> = IDENT
Voorbeelden
@namespace url(https://www.w3.org/1999/xhtml); @namespace svg url(https://www.w3.org/2000/svg); /* Dit selecteert alle XHTML <a> elementen, omdat XHTML de standaard non-prefixed namespace is */ a {} /* Dit selecteert alle SVG <a> elementen */ svg|a {} /* Dit selecteert zowel XHTML als SVG <a> elementen */ *|a {}
Specificaties
Specificatie | Status | Opmerking |
---|---|---|
CSS Namespaces Module The definition of '@namespace' in that specification. |
Recommendation | Eerste definitie |
Browser compatibiliteit
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | 1.0 | 1.0 (1.7 or earlier) | 9.0 | 8.0 | 1.0 |
Namespace selector (|) | 1.0 | 1.0 (1.7 or earlier) | 9.0 | 8.0 | 3.0 |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | ? | ? | ? | ? | ? | ? |