@document
已弃用:此特性不再推荐。虽然某些浏览器可能仍然支持它,但它可能已经从相关的网络标准中删除,可能正在删除过程中,或者可能仅为兼容性目的而保留。请避免使用它,如果可能,请更新现有代码;请参阅本页底部的兼容性表格以指导您的决策。请注意,此特性可能随时停止工作。
非标准:此特性未标准化。我们不建议在生产环境中使用非标准特性,因为它们浏览器支持有限,并且可能会更改或被移除。但是,在没有标准选项的特定情况下,它们可以是合适的替代方案。
@document CSS @规则根据文档的 URL 限制其中包含的样式规则。它主要用于用户定义的样式表(有关更多信息,请参阅 userchrome.org),但也可以用于作者定义的样式表。
语法
@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 bug 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;
}
}
规范
浏览器兼容性
加载中…
另见
- 关于 www-style 邮件列表上的每个站点的用户样式表规则。