Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: critical rendering path, render blocking, DOM, CSSOM, parser blocking

Что происходит при встрече браузером CSS и JavaScript во время парсинга HTML?

Вопрос проверяет понимание механизмов блокировки рендеринга CSS и JavaScript при загрузке веб-страницы.

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

Когда браузер встречает CSS (внешний или внутренний), он продолжает парсить HTML, но приостанавливает рендеринг до полной загрузки и построения CSSOM. Встретив обычный JavaScript (без async/defer), браузер полностью останавливает парсинг HTML, загружает и выполняет скрипт, и только потом продолжает. Это сделано, потому что скрипт может изменить DOM или CSSOM.

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

Влияние CSS и JavaScript на парсинг HTML

Браузер строит DOM (Document Object Model) из HTML и CSSOM (CSS Object Model) из CSS. Эти два дерева объединяются в Render Tree для отрисовки страницы. CSS и JavaScript по-разному влияют на этот процесс.

CSS (Render Blocking)

Когда парсер HTML встречает тег <link rel="stylesheet""> или <style>, он не останавливает парсинг HTML, но блокирует рендеринг. Браузер не будет отображать страницу до тех пор, пока CSSOM не будет полностью построен. Это необходимо, чтобы избежать FOUC (Flash of Unstyled Content).

JavaScript (Parser Blocking)

Когда парсер встречает обычный тег <script> (без атрибутов async или defer), он полностью останавливает парсинг HTML. Браузер загружает скрипт (если он внешний), выполняет его, и только потом продолжает парсинг. Это связано с тем, что скрипт может изменить DOM (через document.write) или обратиться к CSSOM.

Пример

<!DOCTYPE html>
<html>
<head>
  <link rel="stylesheet" href="styles.css"> <!-- Render blocking -->
  <script src="script.js"></script> <!-- Parser blocking -->
</head>
<body>
  <p>Hello</p>
</body>
</html>

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

Оптимизация

  • Для CSS: используйте media атрибуты, чтобы указать, что стили не критичны для начального рендеринга.
  • Для JavaScript: используйте async (скрипт выполняется сразу после загрузки, не блокируя парсинг) или defer (скрипт выполняется после завершения парсинга HTML).

Вывод: Понимание блокировки рендеринга и парсинга критически важно для оптимизации скорости загрузки страницы (Core Web Vitals). Используйте async/defer для скриптов и минимизируйте критический CSS для быстрого первого отображения.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    5

  • Сложность:

    4

Навыки

  • JavaScript

    JavaScript

  • HTML

    HTML

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

#critical rendering path

#render blocking

#DOM

#CSSOM

#parser blocking

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию