Что такое DOCTYPE?


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

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


9
Разве это не должно быть вики?
Алекс

Ответы:


76

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

Браузеры также используют DOCTYPE, чтобы определить способ отображения страницы. Не включая DOCTYPE или неверный может вызвать режим причуд.

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

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

Существуют тонкие различия между различными "DOCTYPE" для рендеринга "в соответствии со стандартами", такими как HTML5 DOCTYPE ( <!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">

39
Сегодня я предпочитаю HTML5 DOCTYPE: <! DOCTYPE html>, он работает во всех современных браузерах, включая IE6.
Уолтер Рамсби

53
IE6 ∉ современные браузеры

26

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

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

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

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

<!DOCTYPE html>

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


2
Является ли тег DOCTYPE HTML? Если так, то зачем нам это нужно для начала?
CuriousMind

2
@vipinkoul тег DOCTYPE указывает, какой тип HTML-документа вы отправляете User-Agent. Это может быть HTML, XHTML или Frameset. И это может быть строгий HTML / XHTML / Frameset или переходный HTML / XHTML / Frameset. В основном это влияет на то, как синтаксический анализатор реагирует на ошибку.
Роб

6

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

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

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

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

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

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


3

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

Формально в SGML и XML объявление DOCTYPE является ссылкой на определение типа документа (DTD), которое определяет формальные правила синтаксиса языка разметки. Ни один браузер никогда не использовал DTD ни для чего и даже не обращался к ним. Однако они используются валидаторами разметки SGML и XML, такими как валидатор разметки W3C , за исключением режима 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 существует несколько иное, более ограниченное понятие «режим причуд», которое очень похоже на документ под названием « Стандарт жизни в режиме причуд» .

Типичная проблема заключается в том, что ширина элементов рассчитывается по-разному в режиме совместимости и в стандартном режиме. Это означает, что макет страницы может быть более или менее изменен или даже полностью испорчен, если страница, предназначенная для работы в режиме причуд, просматривается в стандартном режиме (или наоборот).

Таким образом, вы должны использовать <!DOCTYPE html>для новых страниц и сохранить любой DOCTYPE (если есть), который вы использовали для старых страниц.

Однако в некоторых браузерах режим «причуд» означает, что многие новые функции CSS не поддерживаются. Это означает, что если вы хотите улучшить старую страницу с помощью некоторой функции CSS3, вполне может потребоваться переключиться на DOCTYPE, который запускает режим стандартов. В таком случае вам необходимо просмотреть и протестировать страницу, чтобы увидеть, будет ли она работать в стандартном режиме.


Спасибо за дополнительную информацию, особенно такую: «Ни один браузер никогда не использовал DTD для чего-либо и даже не обращался к ним» и «Нет причин использовать DOCTYPE, отличный от того, <DOCTYPE html>что определен в HTML5 ».
Армфут

2

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

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

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

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

Запись в блоге о doctypes - это исправить ваш сайт с правильным DOCTYPE! (из списка отдельно ).


1

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

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

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

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


1

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

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

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

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


1

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.