@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
est une règle @ qui définit les espaces de noms XML utilisés dans une feuille de style CSS. Les espaces de noms définis sont alors utilisés pour restreindre les sélecteurs universels, de type, et d'attribut afin que ceux-ci ne sélectionnent que les éléments contenus dans cet espace de nom. La règle @namespace
est généralement utilisée lorsqu'on manipule des documents entremêlant différents espaces de noms (par exemple, un document HTML5 qui contient du SVG en ligne ou du MathML ou alors un fichier XML qui est composé de plusieurs vocabulaires).
@namespace url(http://www.w3.org/1999/xhtml);
@namespace svg url(http://www.w3.org/2000/svg);
/* Cela correspond à tous les éléments XHTML <a>
car XHTML est l'espace de nom par défaut, sans
préfixe. */
a {
}
/* Cela correspond à tous les éléments SVG <a> */
svg|a {
}
/* Cela correspond aux éléments <a> XHTML et SVG */
*|a {
}
Les règles @namespace
doivent suivre les règles @ @charset
et @import
et précéder les autres règles @ ainsi que les déclarations de style contenus dans la feuille de style.
@namespace
peut être utilisée afin de définir l'espace de noms par défaut de la feuille de style. Lorsqu'un espace de noms par défaut est définit, les sélecteurs universels et les sélecteurs de types (pas les sélecteurs d'attribut, cf. note ci-après) ne s'appliqueront qu'aux éléments de cet espace de noms.
La règle @namespace
peut également être utilisée afin de définir un préfixe d'espace de noms. Lorsqu'un sélecteur universel, de type ou d'attribut est préfixé avec le préfixe de l'espace de noms, ce sélecteur ne ciblera les éléments que si l'espace de nom et le nom ou l'attribut de l'élément correspond.
En HTML5, les éléments étrangers connus seront automatiquement affectés à des espaces de noms. Cela signifie que les éléments HTML se comporteront comme s'ils appartenaient à l'espace de noms XHTML (http://www.w3.org/1999/xhtml
) même s'il n'y a aucun attribut xmlns
dans le document. Les éléments <svg>
et <math>
seront affectés à leurs espaces de noms respectifs (http://www.w3.org/2000/svg
et http://www.w3.org/1998/Math/MathML
).
Note :
En XML, sauf si un préfixe est directement apposé sur l'attribut (ex. xlink:href
), cet attribut n'est rattaché à aucun espace de noms. Autrement dit, les attributs n'héritent pas de l'espace de noms de l'élément auquel ils sont rattachés. Afin de respecter ce comportement, l'espace de noms par défaut n'est pas appliqué aux sélecteurs d'attributs.
Syntaxe
/* Espace de noms par défaut */
@namespace url(XML-namespace-URL);
@namespace "XML-namespace-URL";
/* Espace de noms préfixé */
@namespace préfixe url(XML-namespace-URL);
@namespace préfixe "XML-namespace-URL";
Syntaxe formelle
@namespace =
@namespace <namespace-prefix>? [ <string> | <url> ] ;
<namespace-prefix> =
<ident>
<url> =
<url()> |
<src()>
<url()> =
url( <string> <url-modifier>* ) |
<url-token>
<src()> =
src( <string> <url-modifier>* )
Spécifications
Specification |
---|
CSS Namespaces Module Level 3 # declaration |
Compatibilité des navigateurs
BCD tables only load in the browser