@document

已弃用:此功能不再推荐。尽管某些浏览器可能仍然支持它,但它可能已从相关的 Web 标准中删除,可能正在被删除过程中,或者可能仅出于兼容性目的而保留。避免使用它,并尽可能更新现有代码;请参阅此页面底部的兼容性表,以指导您的决策。请注意,此功能可能随时停止工作。

非标准:此功能是非标准的,并且不在标准轨道上。不要在面向 Web 的生产站点上使用它:它不会对每个用户都起作用。实现之间也可能存在很大的不兼容性,并且行为将来可能会发生变化。

@document CSS @规则 根据文档的 URL 限制其包含的样式规则。它主要设计用于用户定义的样式表,尽管它也可以用于作者定义的样式表。

css
@document url("https://www.example.com/")
{
  h1 {
    color: green;
  }
}

语法

@document 规则可以指定一个或多个匹配函数。如果任何函数应用于给定的 URL,则该规则将对该 URL 生效。可用的函数有

url()

匹配精确的 URL。

url-prefix()

如果文档 URL 以提供的值得开头,则匹配。

domain()

如果文档 URL 位于提供的域(或其子域)上,则匹配。

media-document()

根据参数中的字符串匹配媒体,其中字符串为 videoimagepluginall 之一。

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 规则指定文档

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 表格仅在浏览器中加载。

另请参阅