@namespace 是用于指定要在 CSS 样式表中使用的 XML 命名空间的 at 规则。
XML 命名空间通过 @namespace 规则创建并在 CSS 样式中使用
在具有大量命名空间的文档中,例如与内联 SVG 或 MathML 配对的 HTML,或混合 XML 词汇表,这些命名空间可能会将选择限制为该命名空间内的某些项目。
使用 @namespace 宏进行的命名空间声明必须出现在样式表中的其他 at 规则和样式声明之前,并遵守 @charset 和 @import 规则。
样式表的默认命名空间可以使用@namespace 设置。对于默认命名空间,通用和类型选择器(属性选择器除外)仅适用于该命名空间内的项目。
命名空间前缀也可以使用 @namespace 定义规则。当命名空间前缀作为通用、类型或属性选择器的前缀时,仅当元素或属性的命名空间和名称匹配时,选择才匹配。
在 HTML 中,命名空间自动给予认可的外国组件。因此,即使页面没有 xmlns 属性的任何实例。
HTML 组件的行为就像它们位于 XHTML 命名空间中一样,并且 svg 和数学元素将被赋予适当的命名空间。
示例
以下示例演示 @namespace 的使用。
<html>
<head>
<style>
@namespace svg url('http://www.w3.org/2000/svg');
body {
font-family: Arial, sans-serif;
background-color: #f0f0f0;
}
.html-link {
color: green;
text-decoration: underline;
font-weight: bold;
}
svg|a {
fill: navy;
text-decoration: underline;
font-weight: bold;
}
</style>
</head>
<body>
<p><a href="#" class="html-link">This is a regular HTML link</a></p>
<svg width="250px" viewBox="0 0 250 20" xmlns="http://www.w3.org/2000/svg">
<a href="#">
<text x="0" y="15">This is a link created in SVG</text>
</a>
</svg>
</body>
</html>