命名空间 | @namespace
@命名空间
@namespace
是定义要在CSS 样式表中使用的XML名称空间的规则。已定义的名称空间可用于限制通用类型和属性选择器,以仅选择该名称空间内的元素。该规则通常只在处理包含多个名称空间的文档时才有用,例如内联SVG或MathML的HTML5或混合多个词汇表的XML。 @namespace
@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 {}
任何@namespace
规则都必须遵循所有@charset和@import规则,并且在样式表中的所有其他规则和样式声明之前。
@namespace
可以用来定义样式表的默认名称空间
。定义默认名称空间
时,所有通用类型选择器(而不是属性选择器,请参阅下面的注释)仅适用于该名称空间中的元素。
该@namespace
规则也可以用来定义一个名称空间前缀
。如果通用类型或属性选择器的前缀是名称空间前缀
,那么只有当元素或属性的名称空间和
名称匹配时,该选择器才会匹配。
在HTML5中,已知的外部元素将被自动分配命名空间。这意味着http://www.w3.org/1999/xhtml即使xmlns文档中的任何位置没有属性,并且<svg>和<math>元素将被分配了适当的命名空间(http://www.w3.org/2000/svg和http://www.w3.org/1998/Math/MathML),HTML元素也会像在XHTML命名空间()中那样工作。
注意:
在XML中,除非直接在属性(例如
,xlink:href
)上定义前缀,否则该属性没有名称空间。换句话说,属性不会继承它所在元素的名称空间。要匹配此行为,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";
形式语法
@namespace <namespace-prefix>? [ <string> | <url> ];where
<namespace-prefix> = <ident>
规范
Specification | Status | Comment |
---|---|---|
CSS Namespaces ModuleThe definition of '@namespace' in that specification. | Recommendation | Initial definition |
浏览器兼容性
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic support | 1.0 | (Yes) | 1.0 (1.7 or earlier) | 9.0 | 8.0 | 1.0 |
Namespace selector (|) | 1.0 | (Yes) | 1.0 (1.7 or earlier) | 9.0 | 8.0 | 3.0 |
Feature | Android | Chrome for Android | Edge | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|
Basic support | ? | ? | (Yes) | ? | ? | ? | ? |