@namespace
试一试
语法
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
规则通常只在处理包含多个命名空间的文档时有用,例如包含内联 SVG 或 MathML 的 HTML,或者混合了多个词汇表的 XML。
任何 @namespace
规则都必须遵循所有 @charset
和 @import
规则,并且必须在样式表中所有其他 at-rule 和 样式声明 之前。
@namespace
可以用来定义样式表的默认命名空间。当定义了默认命名空间时,所有通用和类型选择器(但不包括属性选择器,见下文)只适用于该命名空间内的元素。
@namespace
规则还可以用来定义命名空间前缀。当通用、类型或属性选择器以命名空间前缀为前缀时,则该选择器只有在元素或属性的命名空间和名称匹配时才会匹配。
在 HTML 中,已知的 外部元素 将自动分配命名空间。这意味着 HTML 元素将表现得像它们在 XHTML 命名空间(http://www.w3.org/1999/xhtml
)中一样,即使文档中没有任何 xmlns
属性,并且 <svg>
和 <math>
元素将分配它们各自的命名空间(分别为 http://www.w3.org/2000/svg
和 http://www.w3.org/1998/Math/MathML
)。
注意: 在 XML 中,除非在一个属性上直接定义了前缀(例如,xlink:href
),否则该属性没有命名空间。换句话说,属性不会继承它们所在元素的命名空间。为了匹配这种行为,CSS 中的默认命名空间不适用于属性选择器。
正式语法
@namespace =
@namespace <namespace-prefix>? [ <string> | <url> ] ;
<namespace-prefix> =
<ident>
<url> =
<url()> |
<src()>
<url()> =
url( <string> <url-modifier>* ) |
<url-token>
<src()> =
src( <string> <url-modifier>* )
示例
指定默认和带前缀的命名空间
css
@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 {
}
规范
规范 |
---|
CSS Namespaces Module Level 3 # 声明 |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。