@namespace

This translation is incomplete. Please help translate this article from English

@namespace es una regla que define XML namespace a ser usados en una hoja de estilos CSS. Los namespaces definidos pueden utilizarse para restringir selectores universales, types, y selectores de atributos para seleccionar sólo elementos dentro de ese namespace.La regla @namespace generalmente sólo es útil cuando se trata de documents que contienen múltiples namespace—como HTML5 con SVG o MathML, o XML que mezclamúltiplesvocabularios.

@namespace url(http://www.w3.org/1999/xhtml);
@namespace svg url(http://www.w3.org/2000/svg);

/* Esto coincide con todos los elementos XHTML <a>, ya que el XHTML es el namespace por defecto sin prefijo */
a {}

/* Esto coincide con todos los elementos SVG <a> */
svg|a {}

/* Esto concuerda con todos los elementos XHTML y SVG <a> elements */
*|a {}

Cualquier @namespace debe seguir todas las reglas de @charset y @import, y preceder a todas las demás reglas y declaraciones de estilo de una hoja de estilos.

Se puede utilizar @namespace para definirun namespace por defecto de una hoja de estilos. Cuando se define un namespace por defecto, todos los selectores universales y tipos (pero no los selectores de atributo, véase la nota a continuación) se aplican únicamente a los elementos de ese namespace

La regla @namespace también puede usarse para definir un prefijo de namespace. Cuando un selector universal, tipo, o selector de atributo se antepone a un prefijo de un namespace, ese selector sólo coincide si el namespace y el nombre del elemento o atributo coinciden.

En HTML5, conocidos como elementos externos automaticamente se les asignarán un namespace. Esto significa que los elementos HTML actuarán como si estuvieran en un namespace XHTML (http://www.w3.org/1999/xhtml), incluso si no hay ningún atributo xmlns en ninguna parte del document, y los elementos <svg> y <math> se les asignará un namespace propio (http://www.w3.org/2000/svg and http://www.w3.org/1998/Math/MathML).

Nota: En XML, a menos que se defina un prefijo directamente sobre un atributo (ejemplo., xlink:href), ese atributo no tiene namespace. En otras palabras, los atributos no heredan el namespace del elemento en el que están. Para que coincida con este comportamiento, el namespace por defecto en CSS no se aplica a los selectores de atributos.

Sintaxis

/* Namespace por defecto */
@namespace url(XML-namespace-URL);
@namespace "XML-namespace-URL";

/* Namespace sin prefijo */
@namespace prefix url(XML-namespace-URL);
@namespace prefix "XML-namespace-URL";

Sintaxis oficial

@namespace <namespace-prefix>? [ <string> | <url> ];

where
<namespace-prefix> = <ident>

Especificaciones

Especificación Estado Comentario
CSS Namespaces Module
La definición de '@namespace' en esta especificación.
Recommendation Initial definition

Compatibilidad

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome para AndroidFirefox para AndroidOpera para AndroidSafari en iOSSamsung Internet
@namespaceChrome Soporte completo 1Edge Soporte completo 12Firefox Soporte completo 1IE Soporte completo 9Opera Soporte completo 8Safari Soporte completo 1WebView Android Soporte completo 37Chrome Android Soporte completo 18Firefox Android Soporte completo 4Opera Android Soporte completo 14Safari iOS Soporte completo 1Samsung Internet Android Soporte completo 1.0

Leyenda

Soporte completo  
Soporte completo