Spec-Zone.ru › CSS

Правило @document CSS

Устарело: Эта функция больше не рекомендуется. Хотя некоторые браузеры могут по-прежнему её поддерживать, она уже могла быть удалена из соответствующих веб-стандартов, может находиться в процессе удаления или сохраняться только для обеспечения совместимости. Избегайте её использования и по возможности обновите существующий код; воспользуйтесь таблицей совместимости внизу этой страницы, чтобы принять решение. Имейте в виду, что эта функция может перестать работать в любой момент.

Нестандартное: Эта функция не является стандартной и не включена в процесс стандартизации. Не используйте её на общедоступных веб-сайтах: она будет работать не у всех пользователей. Кроме того, между реализациями могут быть значительные различия, а поведение может измениться в будущем.

Нестандартное: Эта функция не является стандартной и не включена в процесс стандартизации. Не используйте её на общедоступных веб-сайтах: она будет работать не у всех пользователей. Кроме того, между реализациями могут быть значительные различия, а поведение может измениться в будущем.

Правило @document CSS at-rule ограничивает содержащиеся в нём правила стилей в зависимости от 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, который сочетает пользовательский скрипт, атрибуты 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;
  }
}

Спецификации

Первоначально на уровне 3, @document было отложено до уровня 4, но впоследствии удалено.

Совместимость с браузерами

Настольные Мобильные
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android WebView на iOS
document
Нет
Нет
61Поддерживается только пустое значение url-prefix(), которое сохранено благодаря его использованию для определения браузера Firefox. По-прежнему поддерживается в пользовательских таблицах стилей.
1.5–61
Нет
Нет
Нет
61Поддерживается только пустое значение url-prefix(), которое сохранено благодаря его использованию для определения браузера Firefox для Android. По-прежнему поддерживается в пользовательских таблицах стилей.
4–61
Нет
Нет
Нет
Нет
Нет

См. также

  • Правила таблиц стилей пользователя для отдельных сайтов в списке рассылки www-style.

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/At-rules/@document

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API