PassFront
  1. PassFront
  2. База знаний
  3. DOM и браузер

Какие элементы содержатся в DOM, и не находятся в Render Tree?

DOM и браузер

В DOM, но не в Render Tree, находятся: невидимые элементы (`display: none`), метаданные (`<head>`, `<meta>`, `<script>`, `<title>`), а также сгенерированный `::before/::after` наоборот в render tree, но не в DOM.

Render Tree vs DOM

  • DOM — полное дерево всех узлов документа.
  • Render Tree — только видимые узлы для отрисовки (объединение DOM и CSSOM).

Элементы в DOM, но НЕ в Render Tree

display: none

Элемент есть в DOM, но не рендерится (не занимает места):

.hidden { display: none; } /* в DOM, но не в render tree */

Метаданные и не-визуальные теги

Не отображаются, поэтому не в render tree:

  • <head> и его содержимое (<meta>, <title>, <link>, <style>).
  • <script>.

Различие с visibility

  • display: none → не в render tree (не занимает места).
  • visibility: hidden → в render tree (занимает место, но невидим).
  • opacity: 0 → в render tree (виден для layout, прозрачен).

Наоборот — в Render Tree, но НЕ в DOM

Псевдоэлементы ::before/::after с content — рендерятся (в render tree), но их нет в DOM:

.el::before { content: '★'; } /* в render tree, не в DOM */

Коротко для собеседования

В DOM, но не в Render Tree: элементы с display: none (не рендерятся, не занимают места) и не-визуальные теги (<head>, <meta>, <title>, <script>, <link>). visibility: hidden и opacity: 0 — остаются в render tree (занимают место). Наоборот, псевдоэлементы ::before/::after — в render tree, но не в DOM.

Другие вопросы раздела