Немного о DOCTYPE

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

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

Тег doctype указывает на файл объявления типа документа (Document Type Definition (DTD)). В свою очередь DTD определяет, какие правила, тэги, атрибуты и их значения действительны для конкретного html.

Пример наиболее распространенных видов doctype:

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

Полный список DTD рекомендованных W3C.

И немного о том, что означает: Strict, Transitional и Frameset.

  • Strict - в данном DTD отсутствуют теги имеющие статус "опытный" (presentational) либо нежелательный к применению (deprecated).
  • Transitional - более мягкий (переходный) DTD. Он включает в себя все от Strict, а также позволяет использовать опытные и нежелательные теги. Нельзя использовать фреймы.
  • Frameset - в свою очередь наследует все от Transitional и позволяет использовать фреймы.
{{ title }}
  • {{ m.username }}{не представился} {{m.date}}

    {{ m.text }}

    • {{ child.username }} {{child.date}}

      {{ child.text }}

Высказаться по теме

user

2017.11.22