DOCTYPE

Коротко

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

Что такое «DOCTYPE»

В конце 1990-х браузеры отображали страницы с множеством отступлений от стандартов, и тысячи сайтов были свёрстаны под эти особенности. Когда браузеры начали следовать спецификациям, старые сайты могли развалиться. Решение нашли компромиссное: если в начале документа есть правильное объявление типа, браузер работает по стандартам, а если нет — эмулирует поведение старых версий. Так doctype превратился из ссылки на описание языка в переключатель режима.

Пример объявления

<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="utf-8">
  <title>Каталог</title>
</head>

В HTML5 объявление сократилось до одной короткой строки, регистр букв значения не имеет. Раньше писали длинные варианты со ссылкой на файл описания языка, например <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">. Их и сейчас можно встретить в старых шаблонах; часть таких вариантов включает не полный стандартный, а промежуточный режим.

Три режима отображения

  • Стандартный режим — поведение по спецификациям. Включается строкой <!DOCTYPE html>.
  • Почти стандартный режим — отличается мелочами, в основном высотой строк вокруг картинок в ячейках таблиц.
  • Режим совместимости — эмуляция старых браузеров: иначе ведут себя высоты в процентах, таблицы и ряд других правил. Включается, если doctype нет или он из числа совсем старых — например, HTML 3.2 или HTML 4.01 Transitional без ссылки на DTD.

Как проверить режим страницы

Откройте консоль разработчика и выполните document.compatMode. Ответ "CSS1Compat" означает стандартный или почти стандартный режим, "BackCompat" — режим совместимости. Некоторые браузеры также пишут предупреждение о режиме в консоль.

Частая причина неожиданного «BackCompat» на сайтах на PHP — вывод чего-либо до doctype. Предупреждение PHP, отладочный вывод или лишний текст из подключаемого файла попадают в самое начало ответа, и строка с doctype уже не первая. Браузер переключается в режим совместимости, и вёрстка «едет» без изменений в CSS. Поэтому при странных поломках макета стоит посмотреть исходный код страницы: первой строкой должен идти именно doctype.

Обновлено:

Все термины раздела «Frontend»

Что будем искать? Например,Продвижение