@document¶
Правило @document ограничивает правила стиля, содержащиеся в нем, на основе URL-адреса документа. Он разработан в основном для пользовательских таблиц стилей, хотя он также может использоваться в авторских таблицах стилей.
К примеру, если адреса мобильной и основной версии сайта различаются, то мы можем задать собственный стиль элементов для каждой версии.
Синтаксис¶
1 2 3 4 5 6
@document url("https://www.example.com/") h1 color: green; > >
Значения¶
Правило @document может указывать одну или несколько подходящих функций. Если какая-либо из функций применяется к данному URL-адресу, это правило вступит в силу для этого URL-адреса. Доступны следующие функции:
который соответствует точному URL-адресу.
который совпадает, если URL-адрес документа начинается с указанного значения.
который совпадает, если URL-адрес документа находится в предоставленном домене (или его субдомене).
с параметром видео, изображения, плагина или всего.
который совпадает, если URL-адрес документа сопоставляется с предоставленным регулярным выражением. Выражение должно соответствовать всему URL-адресу.
Значения, предоставляемые функциям url() , url-prefix() , domain() , и media-document() могут быть необязательно заключены в одинарные или двойные кавычки. Значения, предоставляемые функции regexp() должны быть заключены в кавычки.
Экранированные значения, предоставляемые функции regexp() акже должны быть экранированы из CSS. Например, . (период) соответствует любому символу в регулярных выражениях. Чтобы соответствовать буквальному периоду, вам сначала нужно избежать этого, используя правила регулярных выражений ( \. ), А затем убежать от этой строки с помощью правил CSS ( \\. ).
Спецификации¶
Примеры¶
Пример 1¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
@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; > >
Пример 2¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
html> head> meta charset="utf-8" /> title>@documenttitle> style> .ssl display: none; > @-moz-document regexp("https:.*") .ssl display: block; background: #5bd4b6; color: #fff; padding: 20px; > > style> head> body> div class="ssl"> Для вашей безопасности на сайте мы используем защищённый протокол. div> body> html>
В данном примере блок с классом ssl будет виден только на сайте, адрес которого начинается с протокола https .
Document.documentElement
Document.documentElement — свойство только для чтения, которое возвращает элемент Element , который является коренным элементом документа document (en-US) (например элемент для HTML документов).
Синтаксис
var element = document.documentElement;
Пример
var rootElement = document.documentElement; var firstTier = rootElement.childNodes; // firstTier -переменная объекта NodeList непосредственных потомков корневого элемента for (var i = 0; i firstTier.length; i++) // что-то делает с каждым прямым потомком корневого элемента // как и firstTier[i] >
Примечания
Это свойство удобно только для чтения для получения корневого элемента, связанного с любым документом.
HTML документ обычно содержит один дочерний узел — , возможно с объявлением DOCTYPE перед ним. XML документы часто содержат множественные дочерние узлы: корневой элемент, объявление DOCTYPE, и инструкции по обработке (en-US) .
Поэтому вам стоит использовать document.documentElement вместо document.firstChild для доступа к корневому элементу.
Спецификации
| Specification |
|---|
| DOM Standard # ref-for-dom-document-documentelement① |
Совместимость с браузерами
BCD tables only load in the browser
Found a content problem with this page?
- Edit the page on GitHub.
- Report the content issue.
- View the source on GitHub.
This page was last modified on 3 авг. 2023 г. by MDN contributors.
Your blueprint for a better internet.
DOM-дерево
В соответствии с объектной моделью документа («Document Object Model», коротко DOM), каждый HTML-тег является объектом. Вложенные теги являются «детьми» родительского элемента. Текст, который находится внутри тега, также является объектом.
Все эти объекты доступны при помощи JavaScript, мы можем использовать их для изменения страницы.
Например, document.body – объект для тега .
Если запустить этот код, то станет красным на 3 секунды:
document.body.style.background = 'red'; // сделать фон красным setTimeout(() => document.body.style.background = '', 3000); // вернуть назад
Это был лишь небольшой пример того, что может DOM. Скоро мы изучим много способов работать с DOM, но сначала нужно познакомиться с его структурой.
Пример DOM
Начнём с такого, простого, документа:
О лосях Правда о лосях.
DOM – это представление HTML-документа в виде дерева тегов. Вот как оно выглядит:
На рисунке выше узлы-элементы можно кликать, и их дети будут скрываться и раскрываться.
Каждый узел этого дерева – это объект.
Теги являются узлами-элементами (или просто элементами). Они образуют структуру дерева: – это корневой узел, и его дочерние узлы и т.д.
Текст внутри элементов образует текстовые узлы, обозначенные как #text . Текстовый узел содержит в себе только строку текста. У него не может быть потомков, т.е. он находится всегда на самом нижнем уровне.
Например, в теге есть текстовый узел «О лосях» .
Обратите внимание на специальные символы в текстовых узлах:
- перевод строки: ↵ (в JavaScript он обозначается как \n )
- пробел: ␣
Пробелы и переводы строки – это полноправные символы, как буквы и цифры. Они образуют текстовые узлы и становятся частью дерева DOM. Так, в примере выше в теге есть несколько пробелов перед , которые образуют текстовый узел #text (он содержит в себе только перенос строки и несколько пробелов).
Существует всего два исключения из этого правила:
- По историческим причинам пробелы и перевод строки перед тегом игнорируются
- Если мы записываем что-либо после закрывающего тега