Что такое document в JavaScript?
Объект document позволяет работать со всей HTML структурой сайта за счёт языка JavaScript. Document является корневым объектом в DOM-структуре сайта.
Через объект вы можете работать со всеми HTML объектами на странице сайта. Вы можете находить элементы по их: ID, классу или имени тега и добавлять к ним свойства и менять их значения. Также вы можете работать с HTML разметкой, добавляя или удаляя элементы из неё.
document.body.style.background = 'red'; // Установили что задний фон для тега body стал красным цветом
@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 .
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 (он содержит в себе только перенос строки и несколько пробелов).
Существует всего два исключения из этого правила:
- По историческим причинам пробелы и перевод строки перед тегом игнорируются
- Если мы записываем что-либо после закрывающего тега