1. Основы HTML и структура документа: синтаксис, теги и дерево DOM
Основы HTML и структура документа: синтаксис, теги и дерево DOM
Представьте, что вы заходите на сайт, но вместо красивых кнопок и картинок видите бесконечный поток неструктурированного текста. Именно так выглядел бы интернет без HTML (HyperText Markup Language). Это не язык программирования, а язык разметки, который объясняет браузеру, где на странице находится заголовок, где абзац, а где — ссылка на другой ресурс. Если архитектуру здания сравнить с кодом, то HTML — это его фундамент и несущие стены. Без прочного каркаса даже самый дорогой декор (стили) не удержится и здание рухнет.
Анатомия HTML-документа и синтаксис тегов
Работа с HTML начинается с понимания того, как строятся его элементарные частицы — теги. Тег — это зарезервированное слово, заключенное в угловые скобки. Большинство тегов являются парными: у них есть открывающий элемент <tag> и закрывающий </tag>. Все, что находится между ними, называется контентом. Например, чтобы создать кнопку, мы пишем <button>Нажми меня</button>. Если забыть закрыть тег, браузер может «растянуть» его действие на весь последующий контент, что приведет к визуальному хаосу.
Однако существуют и одиночные теги, которые не содержат текста внутри себя, а вставляют объект или несут техническую информацию. К ним относятся, например, <img> для изображений или <br> для переноса строки. Важно помнить, что в современном стандарте HTML5 закрывающий слэш в одиночных тегах (вроде <img />) не является обязательным, но часто используется для совместимости со старыми парсерами.
Помимо имени, теги обладают атрибутами. Атрибуты — это дополнительные настройки, которые всегда пишутся в открывающем теге в формате название="значение". Представьте тег <a> (ссылка). Без атрибута href он бесполезен, так как браузер не поймет, куда именно нужно отправить пользователя. Запись <a href="https://google.com">Поиск</a> четко определяет и текст ссылки, и её цель. Атрибуты позволяют задавать уникальные идентификаторы (id), классы для стилизации (class) или альтернативный текст для картинок (alt), который критически важен для поисковых роботов и людей с нарушениями зрения.
Иерархия и стандартная структура страницы
Любой профессиональный HTML-файл начинается с декларации DOCTYPE. Это не тег в привычном понимании, а инструкция для браузера: «Внимание, перед тобой документ стандарта HTML5». Без этой строки браузер может перейти в «режим совместимости» (quirks mode), и ваш сайт будет отображаться так, будто на дворе 1998 год. Сразу после декларации следует корневой элемент <html>, внутри которого живет всё содержимое страницы.
Внутри <html> всегда выделяются две «комнаты»:
<head> (Голова). Здесь хранится техническая информация. Пользователь не видит содержимое этого блока на самой странице, но оно критически важно. Здесь подключаются шрифты, задается кодировка (почти всегда <meta charset="UTF-8">) и заголовок вкладки браузера <title>.<body> (Тело). Это визуальная часть сайта. Всё, что вы видите в окне браузера — тексты, видео, формы — находится здесь.> Правильная вложенность — залог успеха. HTML напоминает матрешку: вы не можете закрыть внешний тег, пока не закрыли все внутренние. Ошибка вида <div><p>Текст</div></p> является грубым нарушением синтаксиса, которое ломает логику обработки документа браузером.
Понятие DOM: как браузер видит ваш код
Когда браузер загружает ваш HTML-файл, он не просто читает его как текстовый документ. Он превращает его в сложную древовидную структуру, которая называется DOM (Document Object Model). В этой модели каждый тег становится «узлом» (node) дерева.
Вершина дерева — это объект document, от которого отходит корень html. У него есть «дети» — head и body. У body могут быть свои потомки, например, header, main и footer. Понимание DOM принципиально для будущего изучения JavaScript, так как именно через эту модель скрипты меняют содержимое страницы «на лету». Если вы динамически удаляете сообщение из ленты новостей, вы на самом деле удаляете узел из дерева DOM.
Рассмотрим процесс отрисовки на примере. Если у нас есть код:
Браузер построит цепочку: body -> section -> (h1 и p). Внутри p будет текстовый узел и еще один дочерний узел b. Если вы случайно закроете section раньше, чем p, дерево «сломается», и браузер попытается починить его самостоятельно, что часто приводит к непредсказуемым сдвигам дизайна.
Разбор структуры на практике: создание каркаса
Давайте пошагово разберем создание базового шаблона, который потребуется на экзамене.
Шаг 1: Объявление типа документа и языка.
Мы пишем <!DOCTYPE html> и открываем <html lang="ru">. Атрибут lang сообщает поисковикам и экранным дикторам, на каком языке написан контент. Это база доступности.
Шаг 2: Наполнение технического блока.
Внутри <head> мы обязательно добавляем мета-тег для масштабирования на мобильных устройствах: <meta name="viewport" content="width=device-width, initial-scale=1.0">. Без этого ваш сайт на смартфоне будет выглядеть как микроскопическая копия десктопной версии. Также добавляем <title>Моя первая страница</title>.
Шаг 3: Организация контента в body.
Внутри <body> мы не набрасываем теги кучей. Мы используем структурные блоки. Например, заголовок первого уровня <h1> должен быть только один на странице — это главная тема документа. Для подразделов используем <h2> и далее вниз до <h6>.
Шаг 4: Работа с текстовыми блоками.
Основной текст помещаем в <p> (параграф). Если нужно выделить слово жирным по смыслу (акцент), используем <strong>. Если нужно просто визуально выделить (например, название книги), используем <em> (курсив).
Шаг 5: Проверка вложенности.
Убеждаемся, что каждый открытый тег закрыт в обратном порядке. Если мы открыли <div>, потом <ul>, потом <li>, то закрывать должны сначала </li>, затем </ul>, и только потом </div>.
Типичные ошибки и их последствия
Часто начинающие верстальщики используют теги не по назначению. Например, используют <b> (просто жирный шрифт) вместо <strong> (важная информация). С точки зрения визуального отображения разницы может не быть, но для поискового робота Google слово внутри <strong> имеет больший вес при ранжировании.
Другая проблема — «div-оматоз». Это избыточное использование тега <div> там, где есть специализированные теги. Зачем писать <div class="header">, если существует тег <header>? Использование правильных тегов делает ваш код понятным не только браузеру, но и другим разработчикам, которые будут поддерживать ваш проект.
Наконец, важно помнить о регистрах. Хотя HTML не чувствителен к регистру (тег <P> сработает так же, как <p>), общепринятым стандартом является использование только строчных букв. Это делает код аккуратным и профессиональным.
Если из этой главы запомнить три вещи — это обязательность декларации DOCTYPE, строгое соблюдение иерархии вложенности тегов и понимание того, что HTML формирует дерево DOM, которое является фундаментом для всего остального веба.