命名空间 | @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>

规范

SpecificationStatusComment
CSS Namespaces ModuleThe definition of '@namespace' in that specification.RecommendationInitial definition

浏览器兼容性

FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support1.0(Yes)1.0 (1.7 or earlier)9.08.01.0
Namespace selector (|)1.0(Yes)1.0 (1.7 or earlier)9.08.03.0

FeatureAndroidChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support??(Yes)????