В HTML (включая XHTML), используемом на веб-страницах, DOCTYPE - это строка, которая запускает один из нескольких режимов браузера (режим причуд, режим стандартов, режим почти стандартов), в зависимости от точного написания DOCTYPE. Вы хотите использовать его для выбора режима браузера, который лучше всего подходит для вашей страницы.
Формально в SGML и XML объявление DOCTYPE является ссылкой на определение типа документа (DTD), которое определяет формальные правила синтаксиса языка разметки. Ни один браузер никогда не использовал DTD ни для чего и даже не обращался к ним. Однако они используются валидаторами разметки SGML и XML, такими как W3C Markup Validator , за исключением режима HTML5. Поэтому выбор DOCTYPE определяет, как работает валидатор, если документ передан ему. Однако режим работы валидатора также может быть выбран в его пользовательском интерфейсе. (Процессоры SGML и XML могут использовать DOCTYPE и другими способами, но очевидно, что этот вопрос ограничивается контекстом HTML, веб-браузерами и тесно связанным программным обеспечением.)
Нет достоверного списка DOCTYPE. Каждая спецификация или черновик HTML определяет свой собственный DOCTYPE или DOCTYPE. Набор DOCTYPE, распознаваемых браузерами при выборе режима, зависит от браузера. На практике нет причин использовать DOCTYPE, отличный от <DOCTYPE html>
, как определено в HTML5 , хотя HTML5 также перечисляет несколько «устаревших DOCTYPE». Вы можете использовать этот DOCTYPE, если вам нужен режим стандартов (рекомендуется для новых страниц), и не использовать DOCTYPE, если вы хотите режим причуд (который вам может понадобиться для старых страниц).
«Режим стандартов», как правило, означает режим работы, при котором браузер наилучшим образом следует HTML, CSS, DOM и другим спецификациям. Обычно это не означает полного соответствия. «Режим причуд» отличается в разных браузерах, но обычно это означает попытку имитировать поведение очень старых браузеров, таких как IE 5. Цель состоит в том, чтобы старые страницы работали, исходя из предположения, что они могут зависеть от функций и ошибок в старые браузеры. См. Описание Что происходит в режиме Quirks? Обратите внимание, что в HTML5 существует несколько иное, более ограниченное понятие «режима Quirks», которое очень похоже на документ под названием Стандартный уровень Quirks Mode .
Типичная проблема заключается в том, что ширина элементов рассчитывается по-разному в режиме совместимости и в стандартном режиме. Это означает, что макет страницы может быть более или менее изменен или даже полностью испорчен, если страница, предназначенная для работы в режиме причуд, просматривается в стандартном режиме (или наоборот).
Таким образом, вы должны использовать <!DOCTYPE html>
для новых страниц и сохранять любой DOCTYPE (если есть), который вы использовали для старых страниц.
Однако в некоторых браузерах режим quirks означает, что многие новые функции CSS не поддерживаются. Это означает, что если вы хотите улучшить старую страницу с помощью некоторой функции CSS3, вполне может потребоваться переключиться на DOCTYPE, который запускает режим стандартов. В таком случае вам необходимо просмотреть и протестировать страницу, чтобы увидеть, будет ли она работать в стандартном режиме.