@document
已弃用:此功能不再推荐。尽管某些浏览器可能仍然支持它,但它可能已从相关的 Web 标准中删除,可能正在被删除过程中,或者可能仅出于兼容性目的而保留。避免使用它,并尽可能更新现有代码;请参阅此页面底部的兼容性表,以指导您的决策。请注意,此功能可能随时停止工作。
非标准:此功能是非标准的,并且不在标准轨道上。不要在面向 Web 的生产站点上使用它:它不会对每个用户都起作用。实现之间也可能存在很大的不兼容性,并且行为将来可能会发生变化。
@document
CSS @规则 根据文档的 URL 限制其包含的样式规则。它主要设计用于用户定义的样式表,尽管它也可以用于作者定义的样式表。
@document url("https://www.example.com/")
{
h1 {
color: green;
}
}
语法
@document
规则可以指定一个或多个匹配函数。如果任何函数应用于给定的 URL,则该规则将对该 URL 生效。可用的函数有
url()
-
匹配精确的 URL。
url-prefix()
-
如果文档 URL 以提供的值得开头,则匹配。
domain()
-
如果文档 URL 位于提供的域(或其子域)上,则匹配。
media-document()
-
根据参数中的字符串匹配媒体,其中字符串为
video
、image
、plugin
或all
之一。 regexp()
-
如果文档 URL 与提供的正则表达式匹配,则匹配。表达式必须与整个 URL 匹配。
提供给 url()
、url-prefix()
、domain()
和 media-document()
函数的值可以选择用单引号或双引号括起来。提供给 regexp()
函数的值必须用引号括起来。
提供给 regexp()
函数的转义值还必须从 CSS 中转义。例如,.
(句点)在正则表达式中匹配任何字符。要匹配字面句点,您首先需要使用正则表达式规则将其转义为 \.
,然后使用 CSS 规则将其转义为 \\.
。
@document
目前仅在 Firefox 中受支持;如果您想在您自己的非 Firefox 浏览器中复制此功能,您可以尝试使用 @An-Error94 的此 polyfill,它结合使用用户脚本、data-* 属性和属性选择器。
注意:此属性有一个 -moz- 前缀版本 - @-moz-document
。在 Firefox 59 的 Nightly 和 Beta 版本中,此版本仅限于在用户和 UA 表中使用 - 这是一项旨在减轻潜在的 CSS 注入攻击的实验(请参阅Firefox 错误 1035091)。
正式语法
@document [ <url> | url-prefix(<string>) | domain(<string>) | media-document(<string>) | regexp(<string>) ]# { <group-rule-body> }
示例
为 CSS 规则指定文档
@document url("http://www.w3.org/"),
url-prefix("http://www.w3.org/Style/"),
domain("mozilla.org"),
media-document("video"),
regexp("https:.*") {
/* CSS rules here apply to:
- The page "http://www.w3.org/"
- Any page whose URL begins with "http://www.w3.org/Style/"
- Any page whose URL's host is "mozilla.org"
or ends with ".mozilla.org"
- Any standalone video
- Any page whose URL starts with "https:" */
/* Make the above-mentioned pages really ugly */
body {
color: purple;
background: yellow;
}
}
规范
在 CSS3 条件规则的第 3 级中,@document
最初被推迟到第 4 级,但随后被删除。
浏览器兼容性
BCD 表格仅在浏览器中加载。
另请参阅
- 在 www-style 邮件列表上关于每个站点的用户样式表规则。