Что такое HTML и из чего состоит документ?
JuniorHTML #html #basics
Вопрос
Что такое HTML, как устроен базовый HTML-документ и что браузер делает с этим текстом при загрузке страницы?
Короткий ответ
HTML (HyperText Markup Language) — язык разметки, описывающий структуру и содержимое веб-страницы с помощью тегов. Документ начинается с <!DOCTYPE html> и состоит из корневого элемента <html>, внутри которого лежат <head> (метаданные, не отображаются) и <body> (видимое содержимое). Браузер парсит этот текст и строит из него дерево объектов — DOM.
Подробный ответ
Структура документа:
<!DOCTYPE html>— указывает браузеру работать в стандартном (не quirks) режиме рендеринга согласно HTML5. Без него браузер может включить режим совместимости со старыми версиями HTML, что ломает CSS-расчёты (box model и т.д.).<html lang="...">— корневой элемент. Атрибутlangважен для скринридеров и переводчиков.<head>— контейнер метаданных:<title>,<meta>, ссылки на стили и скрипты. Ничего из<head>напрямую не рендерится в теле страницы.<body>— всё, что видит пользователь: текст, изображения, интерактивные элементы.
Как браузер превращает HTML в DOM:
- Байты → символы — сырые байты декодируются в строку согласно кодировке (обычно UTF-8, указанной в
<meta charset>). - Токенизация — строка разбивается на токены: открывающие/закрывающие теги, имена атрибутов, текстовые узлы.
- Построение дерева — токены собираются в объектную модель документа (DOM) — иерархию узлов, отражающую вложенность тегов.
- Инкрементальный рендеринг — браузер не ждёт конца файла: он строит DOM постепенно, и при встрече
<script>безasync/deferпарсинг блокируется, пока скрипт не загрузится и не выполнится.
DOM — это не сам HTML-текст, а живая структура в памяти, с которой работает JavaScript (document.querySelector и т.д.) и на основе которой вместе с CSSOM браузер строит render tree для отрисовки на экране.
Пример
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8" />
<title>Пример документа</title>
</head>
<body>
<h1>Привет, мир</h1>
<p>Это минимальный валидный HTML-документ.</p>
</body>
</html>
Дополнительные вопросы
- Что такое quirks mode и чем он опасен?
- Чем DOM отличается от исходного HTML-текста и от CSSOM?
- Почему
<script>в конце<body>часто предпочтительнее, чем в<head>?