PassFront
  1. PassFront
  2. База знаний
  3. Основы CSS

Будут ли в render tree присутствовать элементы с display: none?

Основы CSS

Нет. Элементы с `display: none` не попадают в render tree — браузер не строит для них блоки и не тратит на них раскладку и отрисовку.

Как строится render tree

  1. Из HTML строится DOM, из CSS — CSSOM.
  2. Из них собирается render tree — только то, что будет отображаться.
  3. Узлы с display: none (и их потомки) пропускаются. Пропускаются и невидимые по природе элементы: <head>, <script>, <meta>.

Сравнение со скрытием через visibility

  • visibility: hidden — элемент в render tree: занимает место, участвует в раскладке, но не рисуется.
  • opacity: 0 — элемент рисуется полностью, просто прозрачный, и реагирует на клики.

Что это значит на практике

  • Переключение display: none ↔ block вызывает пересчёт раскладки (reflow).
  • У скрытого через display: none элемента offsetWidth и getBoundingClientRect() возвращают нули.

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

Нет: display: none исключает элемент и его потомков из render tree; visibility: hidden оставляет его там, но не рисует.

Подробнее: web.dev — Render tree

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