Здесь есть несколько вопросов, которые вы объединяете, поэтому трудно закрыть этот вопрос как дубликат, даже если на каждый из вопросов, которые вы сами ставили, уже задавали и отвечали раньше. Поэтому я надеюсь, что это поможет!
Как определяется элемент root CSSOM (CSS Модель объекта)
root - это просто root элемент документа, или html
, чтобы не было недопонимания по этому поводу.
авторы, похоже, предполагают, что элемент body является root (..). Пример это здесь https://blog.logrocket.com/how-css-works-parsing-painting-css-in-the-critical-rendering-path-b3ee290762d3/
Эмм, нет. В примере на этой странице используется "root" в качестве вершины конкретного поддерева, о котором идет речь, который просто находится там <body>
, но это совпадение; пример вполне мог бы быть для таблицы, и тогда <table>
был бы "root".
Более того, факт, что спецификация HTML, кажется, не соответствует ИСПОЛЬЗУЙТЕ ЛИБО из этих тегов в разметке (возможно, я неправильно понимаю это).
Стартовые теги для <html>
и <body>
являются необязательными, поэтому да, они могут быть опущены из HTML документ. То же самое для <head>
. Но сами элементы все еще там! Все содержимое находится внутри элемента html
, начального тега или нет. Вы можете проверить это сами, загрузив документ HTML, скажем,
<title>title</title>
<div>Hello world</div>
в браузер, и, проверив его, вы увидите, что div теперь упакован внутри элемента body
, а заголовок в элементе head
. Обойти это невозможно.
Теперь запутанная часть заключается в том, что некоторые (но не все) стили CSS, применяемые к body
, применяются к html
вместо браузера. background-color
например; если вы присваиваете его телу, все окно браузера становится цветным, а не только область тела.
Это оставшееся поведение со времени, длинного go, когда элемент html
не считался холст для рисования; его нельзя было стилизовать, и только тело имело атрибуты стиля (BGCOLOR, TEXT, LINK et c). Хотя это больше не так, браузеры по-прежнему ведут себя так, как если бы это было, в целях совместимости.