Будут ли в render tree присутствовать элементы с display: none?
Основы CSS
Нет. Элементы с `display: none` не попадают в render tree — браузер не строит для них блоки и не тратит на них раскладку и отрисовку.
Как строится render tree
- Из HTML строится DOM, из CSS — CSSOM.
- Из них собирается render tree — только то, что будет отображаться.
- Узлы с
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