Первый HTML-документ: index.html и базовая структура

разметка≈ 10 минут

Здесь будет встроен видео-разбор темы (5–7 минут, YouTube / RuTube / VK Видео) — тем, кто лучше воспринимает на слух, текст ниже не обязателен.

Любая страница в интернете начинается с файла. Браузер скачивает этот файл, читает его как HTML и рисует страницу. Самый первый файл обычно называется index.html — это корневой файл проекта, который браузер открывает автоматически, если в адресе не указано другое имя. В этой статье напишем такой файл с нуля: откроем редактор, введём текст, сохраним и посмотрим, как браузер понимает, что ему дали. А в следующей статье разберём скелет страницы — doctype, <head> и первый файл на диске — ещё глубже.

Разделы темы:·

Когда вы вводите адрес сайта, например example.com, браузер просит у сервера страницу. Если в адресе не указано конкретное имя файла, сервер ищет файл с именем index.html и отправляет его. Это общепринятое соглашение: index.html — это домашняя страница сайта, корневой файл всего проекта.

Имя важно именно так написать: index.html. Другое имя, например home.html, тоже будет работать, но тогда адрес придётся указывать полностью: example.com/home.html. А index.html открывается по умолчанию, поэтому для главной страницы его используют всегда.

index.html должен лежать в корне проекта, если это главная страница.

Для работы нужен редактор кода. Подойдёт любой: VS Code, Atom, Sublime Text, WebStorm или даже обычный «Блокнот» в самом начале. Создайте файл index.html и напишите в нём одну строку.

jsлистинг · не запускается
Листинг только для чтения: этот код не запускается в браузере.

Тег <h1> — это самый крупный заголовок. Всё, что написано между <h1> и </h1>, браузер покажет как заголовок. Откройте файл в браузере: даже если вокруг этой строки ничего нет, браузер попытается отобразить текст.

Браузер очень терпеливый: он автоматически исправляет мелкие проблемы в разметке. Откройте инструменты разработчика — во вкладке Elements или Элементы вы увидите, что браузер добавил вокруг вашей строки дополнительные теги. Он достроил недостающую обёртку сам, потому что знает, как должна выглядеть правильная HTML-страница.

Писать весь скелет документа вручную каждый раз неудобно. В большинстве редакторов кода есть сокращение: поставьте восклицательный знак ! и нажмите клавишу Tab. Редактор вставит готовую базовую структуру HTML-документа.

jsлистинг · не запускается
Листинг только для чтения: этот код не запускается в браузере.

Это всего лишь шаблон. Всё, что в нём есть, можно менять: язык, кодировку, заголовок, содержимое. Но каждая строка здесь несёт смысл, и дальше мы разберём, зачем нужна каждая.

Первой строкой в HTML-документе идёт <!doctype html>. На первый взгляд это объявление версии, но работает оно иначе: doctype — это переключатель режима отрисовки. Если он есть, браузер рисует страницу по современным правилам. Если его нет, браузер может включить режим совместимости со старыми ошибками.

Последняя версия стандарта — HTML5. Она добавила семантику, мультимедиа, графику и многое другое. Синтаксис doctype при этом остался очень коротким и легко запоминается.

js
Tab добавляет отступ. Чтобы выйти из редактора, нажмите Escape — фокус перейдёт на кнопку запуска.
страница примера
разбор вывода
Первое слово — CSS1Compat: это стандартный режим, который включает современный doctype. Всё, что внутри <head>, попало в служебную часть: meta и title. Видимый тег <h1> оказался в <body>.

Doctype должен стоять первой строкой. Перед ним не должно быть пробелов, комментариев или текста — иначе браузер может не понять, что страница современная.

Теги делятся на две группы. Парные теги имеют открывающую и закрывающую части: <html>…</html>, <head>…</head>, <title>…</title>, <body>…</body>. Одиночные теги состоят из одной части, потому что внутри них нечего оборачивать: <meta>, <img>, <br>.

Тег может содержать атрибуты — дополнительные параметры, которые расширяют его возможности. Порядок атрибутов внутри тега не важен, но у каждого тега есть свой набор разрешённых атрибутов.

jsлистинг · не запускается
Листинг только для чтения: этот код не запускается в браузере.

Атрибут lang говорит браузеру, на каком языке написан документ. Это важно для поисковиков, переводчиков и программ чтения с экрана. Атрибут charset="utf-8" в теге <meta> указывает кодировку — правило, по которому байты файла превращаются в буквы. UTF-8 понимает русский язык, поэтому мы используем её почти всегда.

Любой HTML-документ содержит две важные секции. Секция <head> — это служебная часть: заголовок вкладки, описание страницы, кодировка, ссылки на стили и скрипты. Всё, что здесь написано, не появляется на самой странице, но нужно браузеру, поисковикам и другим программам.

Секция <body> содержит весь контент, который видит пользователь: заголовки, абзацы, картинки, кнопки, ссылки. Если что-то должно быть на странице, оно находится именно здесь.

jsлистинг · не запускается
Листинг только для чтения: этот код не запускается в браузере.

В этом примере <title> написан внутри <head>, поэтому он появится на вкладке браузера. Текст «Привет, мир!» и абзац написаны внутри <body>, поэтому их увидит посетитель.

Абсолютно любой контент, который отображается на веб-странице, должен быть обёрнут в определённый тег. Тег говорит браузеру, что это за контент: заголовок, абзац, ссылка, кнопка или что-то ещё.

jsлистинг · не запускается
Листинг только для чтения: этот код не запускается в браузере.

Здесь <h1>Hello World</h1> превращает текст в заголовок первого уровня, а <p>Это абзац.</p> — в абзац. Браузер может показать и «голый» текст без тегов, но тогда он не поймёт, что это за текст, и не сможет правильно его оформить.

Если текст не обёрнут в тег, браузер отобразит его, но не поймёт его смысл.

  • index.html — корневой файл сайта, который браузер открывает по умолчанию, если в адресе не указано другое имя.
  • Базовая структура HTML-документа состоит из <!doctype html>, <html>, <head> и <body>.
  • <!doctype html> — первой строкой, переключает браузер в стандартный режим отрисовки.
  • <head> хранит служебную информацию: кодировку, заголовок вкладки, ссылки на стили и скрипты.
  • <body> содержит всё видимое содержимое страницы.
  • Любой контент на странице должен быть обёрнут в тег, иначе браузер не поймёт его смысл.

1/3Почему главную страницу сайта обычно называют index.html?

2/3Что делает первой строкой <!doctype html>?

3/3В какой секции HTML-документа размещается видимый контент?

Создайте свой index.html

Откройте редактор кода и создайте файл index.html в отдельной папке. Напишите базовую структуру HTML-документа: doctype, <html lang="ru">, <head> с <meta charset="utf-8"> и <title>, а внутри <body> — заголовок <h1> с вашим именем и абзац <p> с одним предложением.

Откройте файл в браузере. Проверьте три вещи: на вкладке появилось название из <title>, заголовок и абзац отображаются на странице, русский текст читается без каши.

Файл может выглядеть так:

jsлистинг · не запускается
Листинг только для чтения: этот код не запускается в браузере.

Найдите и исправьте ошибки

В этом файле несколько ошибок: не хватает doctype, служебные теги оказались внутри <body>, а текст не обёрнут в теги. Предскажите строку вывода и запустите пример.

js
Tab добавляет отступ. Чтобы выйти из редактора, нажмите Escape — фокус перейдёт на кнопку запуска.
страница примера

Теперь исправьте разметку так, чтобы на выходе получилось CSS1Compat | head: meta, title | body: h1, p. Добавьте doctype, перенесите <meta> в <head>, а текст оберните в <h1> и <p>.

Ошибок несколько. Нет doctype — поэтому режим BackCompat. Текст «Скидки до пятницы!» стал обычным текстом, а не тегом. <meta> оказался внутри <body>, потому что стоит после текста. Исправленный вариант:

jsлистинг · не запускается
Листинг только для чтения: этот код не запускается в браузере.