DOCTYPE: вчера и сегодня
7 октября 2011 | Опубликовано в Веб-дизайн | 3 Комментариев »
Большинство начинающих верстальщиков просто копируют аккуратно строчку doctype из какого-нибудь файла. Либо соглашаются с тем, что им предлагает редактор типа Dreamweaver. А наиболее самоуверенные, заметив, что страничка работает и без него, вообще не указывают doctype, решив, что это — какой-то пережиток прошлого. Натыкаясь в комментариях на фразы типа «зачем в html5 придумали еще какой-то doctype», решила напомнить (а кому-то и рассказать), откуда у doctype ноги растут.
Сегодня doctype выглядит очень просто:
<!DOCTYPE html>
Сама очевидность, причем, регистр не важен. Для XML-документов указание опционально. Почему? А потому, что XML всегда рендерится браузером в стандартном режиме. А для
HTML5-документов спецификация W3C требует обязательного указания DOCTYPE для уверенности, что браузер выбрал стандартный режим отображения.
Всем, кому интересно поподробней — читаем дальше внимательно, чтобы впредь чувствовать уверенность в своих знаниях.
Итак, что такое doctype? Это старая история времен браузерных войн. DOCTYPE был рекомендован к указанию еще в HTML 2.0, а с версии HTML 3.2 его использование объявили обязательным. Однако, по-настоящему он стал нужен с появлением пятой версии IE для Mac'ов. Дело в том, что этот новый на момент своего выхода в 2000 году браузер стал лидером в плане поддержки HTML-стандартов. И, представьте: новый браузер рендерит страницу согласно самым современным на тот момент стандартам, но все-то страницы верстаются исходя из поддержки доминирующих браузеров — 4-ых IE и Netscape, а они эти стандарты не поддерживают.
И IE5/Mac стал смотреть на DOCTYPE, выполнявший роль переключателя между старыми и новыми стандартами. Если он находил DOCTYPE в начале документа, то страница рендерилась как HTML 4.01 и CSS 1, если же DOCTYPE не был указан — документ отображался как в режиме совместимости со «старыми» браузерами.
Однако, эти проблемы до конца не решались еще долго, потому что вариантов DOCTYPE — пара десятков, а разработчики часто не заморачивались над тем, что у них указано в DOCTYPE.
Вот один из них
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Напямять учить сложновато? Разработчики HTML5 тоже так подумали, и за это им огромное спасибо. Все это теперь можно заменить, как уже говорилось выше, на
<!DOCTYPE html>
Причем, в HTML-нотации HTML5 регистр DOCTYPE-декларации не имеет значения, поэтому встречаются самые разные варианты её написания:
<!DOCTYPE HTML>
<!DOCTYPE html>
<!doctype HTML>
<!doctype html>
Помните только одно: если вы поместите перед DOCTYPE хоть один символ, даже пробел — браузер не прочтет DOCTYPE и отобразит страницу в режиме обратной совместимости, то есть, без учета современных веб-спецификаций. Будьте внимательны!
Еще один момент связан с «коротким» <!DOCTYPE html>: некоторые html-генераторы не умеют выдавать DOCTYPE в «коротком» виде, специально для них придумали следующую строку:
<!DOCTYPE html SYSTEM "about:legacy-compat">
Тут содержимое кавычек регистрозависимо! Сами кавычки могут быть как двойными, так и одинарными: <!DOCTYPE html SYSTEM 'about:legacy-compat'>.
Пробелов, как в коротком, так и в расширенном варианте, может быть больше одного, это некритично.
Запомнте: строка «about:legacy-compat» больше ни для чего не нужна, кроме как для html-генераторов, если вы пишете код руками — ее вставлять не нужно.
2 апреля 2012 в 14:13
Спасибо за статью!
Просто и ясно.
12 августа 2014 в 1:26
так почему просто html а не html5
????????
января 2, 2015 at 12:44 пп
html5 — это всё условности, это всё тот же html, просто добавляются какие-то новые фишки, всё зависит от браузера — научили или нет браузер читать эти фишки. Я так думаю...