Что такое DOCTYPE? - PullRequest
       45

Что такое DOCTYPE?

167 голосов
/ 06 января 2009
  • Что такое DOCTYPE и почему я хочу его использовать?
  • Какие типы DOCTYPE я могу использовать?
  • В чем разница между стандартами и режимом причуд, и с какими причудами я могу столкнуться с разными настройками DOCTYPE?

Наконец, какой правильный DOCTYPE я должен использовать?

Ответы [ 8 ]

74 голосов
/ 06 января 2009

По сути, DOCTYPE описывает HTML-код, который будет использоваться на вашей странице.

Браузеры также используют DOCTYPE, чтобы определить способ отображения страницы. Если не указать DOCTYPE или указать неправильный DOCTYPE, можно вызвать режим причуд. Ключевым моментом здесь является то, что режим quirks в Internet Explorer весьма отличается от режима quirks в Firefox (и других браузерах), что означает, что у вас будет сложная работа на намного , пытающаяся обеспечить стабильную работу вашей страницы во всех браузерах. если страницы отображаются в режиме причуд, чем вы, если они отображаются в стандартном режиме.

В Википедии содержится более подробное описание различий в при рендеринге при использовании различных DOCTYPE . XHTML поддерживается определенными типами документов, и существует довольно много споров об использовании XHTML, который хорошо описан в XHTML - мифы и реальность .

Существуют тонкие различия между различными типами документов типа «жалоба на стандарты», такими как тип документа HTML5 (<!DOCTYPE html>, до HTML5, известного только как «тощий тип документа», который не запускает стандартизированный рендеринг в старых браузерах), и другими типами DOCTYPE, такими как как этот для переходного HTML 4.01:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
26 голосов
/ 06 января 2009

DOCTYPE сообщает пользовательскому агенту-потребителю (веб-браузеры, веб-сканеры, инструменты проверки), к какому типу документа относится файл. Его использование гарантирует, что потребитель правильно анализирует HTML, как вы и предполагали.

Существует несколько различных DOCTYPES для HTML, XHTML и Framesets, и каждый из них имеет два режима Strict и Transitional. Строгий говорит, что ваша разметка точно использует определенные стандарты. См. Страницу W3C DTD для получения дополнительной информации.

Quirksmode - это, в основном, метод компоновки со времен войны браузеров, когда стандарты были гораздо менее уважаемы и определены. Как правило, допустимая страница в режиме стандартов будет более согласованно размещаться в различных браузерах, но в ней могут отсутствовать определенные функции, которые вам требуются. Одной из таких функций является целевой атрибут якорного тега. Сайт Quirksmode является отличным ресурсом для устранения этих различий.

Одна заключительная мысль заключается в том, что новый стандарт HTML5 предлагает использовать очень простой DOCTYPE:

<!DOCTYPE html>

Использование этого DOCTYPE - это совместимый с прямым способом способ указать, что ваши страницы находятся в стандартном режиме и являются HTML. Это метод, который использует Google, и его довольно легко запомнить. Я рекомендую использовать этот DOCTYPE, если вы не планируете использовать XHTML.

6 голосов
/ 06 января 2009

Тип документа определяет, какую версию HTML / XHTML использует ваш документ. Вы хотели бы использовать тип документа, чтобы при запуске кода через валидаторы валидаторы знали, какую версию HTML / XHTML следует проверять. На этой странице представлен хороший обзор:

Не забудьте добавить тип документа

Типичные типы документов, которые вы можете использовать, перечислены здесь:

Рекомендуемый список DTD

Какой тип документа вы должны использовать, зависит от кода, который вы используете, но чтобы понять, попробуйте запустить код через валидатор W3C и используйте раскрывающееся меню Тип документа в Меню «Дополнительные параметры», чтобы попробовать разные типы документов.

Служба проверки разметки W3C

3 голосов
/ 15 января 2015

В 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, который запускает режим стандартов. В таком случае вам необходимо просмотреть и протестировать страницу, чтобы увидеть, будет ли она работать в стандартном режиме.

2 голосов
/ 06 января 2009

Типы документов сообщают браузеру, на каком языке написана страница, будь то HTML или XHTML. Например,

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">

сообщить браузеру, что страница должна отображаться как HTML4 strict. Старые браузеры раньше неправильно отображали страницы, и поэтому новые браузеры имитируют ошибки старых браузеров при обнаружении старого типа документа.

Сегодня вы должны использовать как минимум HTML4 или лучше XHTML.

Запись в блоге о типах документов: Исправьте свой сайт с правильным DOCTYPE! (из Список отдельно ).

1 голос
/ 06 января 2009

В Интернете doctype ничего не делает, кроме как сообщает браузеру, что вам нужен режим стандартов, почти стандартов или режимы причуд.

Какие изменения в режиме причуд зависят от браузера: Firefox, Opera, Safari и Chrome реализуют ограниченный набор причуд, таких как удаление места для текстовых спусковых устройств в коде, подобном <table><tr><td><img></td></tr></table> (решение: td img { vertical-align:bottom; }). IE, с другой стороны, возвращается к механизму рендеринга в IE5.5. Это означает, что вы не сможете использовать любых новых функций, реализованных с 2000 года.

Для запуска стандартного режима я предлагаю использовать тип документа HTML5 <doctype html>, так как его проще всего запомнить.

1 голос
/ 06 января 2009

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

Doctype - это не что иное, как объявление того, какие теги вы можете использовать в своем html (хотя браузеры могут использовать больше или меньше того, что определено). Вы можете открыть файл doctype и начать читать ( XHTML 1.0 Строгий )

Если вы не укажете тип документа, браузер изо всех сил попытается угадать, но не всегда найдет правильный тип.

Режим Quirks - это просто метод, используемый браузерами для обеспечения обратной совместимости. Отличный пример режима Quirks - IE отображает блоки

0 голосов
/ 06 января 2009

Тип документа - это документ, который описывает, как может выглядеть содержимое документа, похожего на xhtml (например, веб-страница). Примечание: это определяет только синтаксис указанной страницы, рендеринг страницы НЕ определяется DTD!

Например, тип документа может определять, как может выглядеть тег <table> - какие атрибуты он принимает и какие значения / значения типов принимаются для каждого атрибута. Думайте об этом как о лексиконе вашей текущей веб-страницы.

Википедия содержит информативную страницу о различных типах доктрин, которые широко используются. Имейте в виду - ничто не мешает вам создать свой собственный тип документа. Однако есть вероятность, что браузер, вероятно, не знает, как отобразить ваш документ.

Какой DTD использовать, зависит от того, что вы собираетесь писать. Например, XHTML имеет совершенно другое DTD, чем HTML.

...