Яндекс.Метрика

Дизайн-журнал №1. Актуальная информация для дизайнеров, веб дизайнеров, программистов и разработчиков сайтов.

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-генераторов, если вы пишете код руками — ее вставлять не нужно.




Комментарии

  1. Олег
    Thumb up Thumb down 0

    Спасибо за статью!

    Просто и ясно.

  2. вапрп
    Thumb up Thumb down 0

    так почему просто html а не html5

    ????????

    Андрей Ответ:

    Thumb up Thumb down 0

    html5 — это всё условности, это всё тот же html, просто добавляются какие-то новые фишки, всё зависит от браузера — научили или нет браузер читать эти фишки. Я так думаю...