Открыть сервис

Элемент DOCTYPE в HTML

<!DOCTYPE html> — это объявление типа документа (от англ. document type declaration), которое указывает браузеру, что документ написан на языке разметки HTML и соответствует стандартам конкретной версии спецификации. В HTML5 данная конструкция является обязательной частью синтаксиса и располагается самой первой строкой исходного кода веб-страницы, перед тегом <html>.

Назначение и принцип работы

Основная функция объявления DOCTYPE — переключение браузера в «стандартный режим» (standards mode) обработки страницы. Современные браузеры используют эту строку для определения того, как интерпретировать CSS и разметку: в соответствии с рекомендациями W3C или в режиме совместимости с устаревшими браузерами. Отсутствие корректного DOCTYPE приводит к активации «режима совместимости» (quirks mode), при котором браузер имитирует поведение старых версий Internet Explorer, что вызывает ошибки в отображении страниц, созданных по современным стандартам.

История развития

Версии HTML 4 и XHTML

До появления HTML5 объявление DOCTYPE было громоздкой конструкцией, содержащей ссылку на официальный DTD (Document Type Definitionопределение типа документа). В HTML 4.01 существовало три варианта:

  • Строгий (Strict) — <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">` — запрещал использование устаревших элементов и атрибутов.
  • Переходный (Transitional) — <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> — допускал применение презентационных тегов вроде <font>`.
  • С фреймами (Frameset) — использовался для документов с фреймовой структурой.

Для XHTML 1.0 применялись аналогичные объявления, но с указанием пространства имён XML, например: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">`.

Стандарт HTML5

С принятием спецификации HTML5 в 2014 году объявление было радикально упрощено. Разработчики отказались от ссылок на внешние DTD, поскольку браузеры фактически не использовали их для проверки документа. Единственным допустимым вариантом стало короткое <!DOCTYPE html>. Регистр символов не имеет значения, однако по сложившейся практике принято писать заглавными буквами.

Правила использования

Объявление DOCTYPE не является HTML-тегом в классическом понимании — это инструкция для браузера, поэтому она не имеет закрывающего тега и не требует соблюдения правил вложенности. Ключевые требования:

  • Размещается строго в первой строке документа, до любых комментариев, пробелов или BOM-последовательностей.
  • Не наследуется и не может быть задано через CSS или JavaScript.
  • В HTML5 не имеет атрибутов — любые дополнительные параметры игнорируются.
  • При использовании формата XHTML (включая HTML5, поданный с XML-типом содержимого) объявление должно быть записано в нижнем регистре: <!doctype html>.

Влияние на отображение страницы

Отсутствие DOCTYPE или его некорректное написание является одной из наиболее частых причин проблем с вёрсткой. В режиме совместимости браузеры применяют иные правила вычисления размеров элементов (модель блока), иную типографику и обработку ошибок в CSS. Например, в quirks mode ширина элемента width включает в себя padding и border, тогда как в стандартном режиме эти свойства добавляются к указанной ширине. Это приводит к смещению блоков, «разъезжанию» сетки сайта и некорректной работе адаптивных макетов.

Промежуточный вариант — «почти стандартный режим» (almost standards mode) — возникает при использовании DOCTYPE для переходного HTML 4.01 и отличается лишь обработкой высоты строк в таблицах.

Проверка корректности

Валидатор W3C (Markup Validation Service) позволяет проверить наличие и корректность объявления DOCTYPE. При прохождении валидации документ должен начинаться с правильной строки, соответствующей заявленному типу содержимого. Для HTML5 достаточно проверить наличие <!DOCTYPE html>; остальные версии требуют точного совпадения строки с эталоном из спецификации.

Распространённые ошибки

  • Написание DOCTYPE внутри тега <html> или после него — браузер в этом случае игнорирует объявление.
  • Использование устаревших вариантов для HTML5-документов — не является синтаксической ошибкой, но избыточно.
  • Добавление пробела или комментария перед строкой — приводит к активации режима совместимости в Internet Explorer.
  • Путаница между HTML и XHTML: для XHTML-документов, подаваемых как application/xhtml+xml, DOCTYPE необязателен, но рекомендуется для совместимости.

Значение в современной веб-разработке

В условиях широкого распространения HTML5 объявление <!DOCTYPE html> стало де-факто стандартом для всех новых веб-страниц. Оно одинаково воспринимается всеми современными браузерами, включая мобильные, и не требует указания версии. Системы управления контентом и фреймворки автоматически включают эту строку в генерируемые шаблоны.

Несмотря на кажущуюся простоту, корректное объявление DOCTYPE остаётся обязательным условием предсказуемого рендеринга и кросбраузерной совместимости. Его отсутствие считается грубой ошибкой при профессиональной вёрстке, поскольку напрямую влияет на пользовательский опыт и корректность работы интерактивных элементов, размеры которых рассчитываются на основе стандартной блочной модели.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →