MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

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 (http://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 (http://www.w3.org/2000/svg en http://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> | <url> ];

where
<namespace-prefix> = <ident>

Voorbeelden

@namespace url(http://www.w3.org/1999/xhtml);
@namespace svg url(http://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 ? ? ? ? ? ?

Documentlabels en -medewerkers

 Aan deze pagina hebben bijgedragen: Tonnes, WartClaes, leroydev
 Laatst bijgewerkt door: Tonnes,