Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про HTML: dom, cssom

В каком порядке браузер строит DOM и CSSOM?

Вопрос проверяет понимание параллельности и зависимостей: что строится потоково, что блокируется, и почему CSS важен до первой отрисовки.

Короткий ответ

DOM строится по мере парсинга HTML — потоково, сверху вниз. CSSOM строится после загрузки и парсинга CSS-файлов, которые браузер находит в HTML. Эти процессы могут идти параллельно: DOM продолжает строиться, пока качается CSS. Но для создания Render Tree и первой корректной отрисовки обычно нужен уже готовый CSSOM, поэтому стили считаются блокирующими рендер.

Длинный ответ

Важно разделять “строим” и “можем отрисовать”.

1) DOM: потоково при чтении HTML

Браузер читает HTML и сразу добавляет узлы в DOM.

  • порядок: от начала документа к концу

  • если встречается <script> без defer/async, парсинг DOM может остановиться до выполнения скрипта

2) CSSOM: после загрузки CSS

Когда браузер встречает CSS, он начинает загрузку и затем парсит его в CSSOM.

  • Определение: CSSOM — структура, содержащая CSS-правила и позволяющая вычислить итоговые стили.

  • CSS может грузиться параллельно с построением DOM, но CSSOM появится только после получения и парсинга CSS.

3) Ключевая зависимость: Render Tree требует и DOM, и CSSOM

Даже если DOM уже частично готов, браузеру для визуального дерева обычно нужен и CSSOM.

  • Render Tree строится из:

    • узлов DOM, которые отображаются,

    • рассчитанных стилей на основе CSSOM

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

  1. DOM может быть “почти готов”, но отрисовка задерживается из-за CSS.

  2. Неправильно подключённые стили (много, тяжёлые, в начале) могут сдвинуть FCP/LCP.

  3. Скрипт может зависеть от CSS (например, измерять размеры), и тогда браузеру придётся синхронно дождаться стилей.

Мини-пример зависимости от стилей

// запрос размеров может заставить браузер завершить расчёты стилей/лейаута
const h = document.querySelector('.card').offsetHeight;

Вывод: браузер строит DOM во время парсинга HTML, а CSSOM — после загрузки и парсинга CSS. Для корректной визуальной сборки (render tree → layout → paint) обычно нужны оба, поэтому CSS часто влияет на скорость первого рендера.

Уровень

  • Рейтинг:

    4

  • Сложность:

    7

Навыки

  • HTML

    HTML

Ключевые слова

#dom

#cssom

Подпишись на React Developer в телеграм