DOCTYPE в HTML5. Как и зачем объявлять

Для начала небольшой спойлер: объявление Doctype в HTML5 имеет скромный минималистичный вид:

<!DOCTYPE html>

При этом вовсе не обязательно писать DOCTYPE большими буквами, так как он не является регистрозависимым. Такие варианты написания, как <!doctype html> и <!Doctype html> также являются верными.

Однако, касательно расположения doctype в html-документе действует строгое правило: doctype должен всегда располагаться в верхней строке! Почему? Чтобы ответить на этот вопрос, необходимо сначала разобраться: для чего нужен doctype и что произойдет, если веб-мастер забудет его указать?

Зачем нужен DOCTYPE?

Позвольте мне начать эту главу с небольшой доброй истории. В далеком 1989 году на свет родился язык гипертекстовой разметки по имени HTML. Он был еще совсем малышом и позволял строить только самые простые веб-конструкции, которые с гордым видом передавал веб-браузеру. Браузер, в свою очередь, радостно считывал html-код и отображал страницы по заранее оговоренным с HTML правилам. Эти правила называются спецификацией. Тогда, в 1989 году HTML был первым представителем династии гипертекстовых языков разметки, подающим надежды на рождение более продвинутых потомков. Поэтому ему дали гордое имя HTML1.0 и издали для него свод правил, собственную спецификацию. По мере развития языка HTML, в мире веб-строительства стали появляться «более продвинутые потомки» HTML: HTML2.0, HTML3.2, HTML4.1 и другие. Для каждой версии HTML создавался свой свод правил, т. е. своя спецификация. Вы только представьте, насколько вырос уровень ответственности браузера! Теперь, читая файл с html расширением, браузер должен был выяснить, какой из потомков HTML «приложил руки» к созданию файла, и отобразить страницу в соответствии с его спецификацией! Поэтому во избежании ошибок со стороны браузера при отображении страницы, был введен doctype. В доктайпе мы сообщаем браузеру, какой свод правил(читай — спецификацию) использовать при отображении страницы.

DOCTYPE— это сокращение от словосочетания «document type«. Что в переводе с английского языка значит «тип документа».

Что случится, если не указать доктайп?

Если веб-мастер не укажет тип документа, то браузер останется наедине со своими мыслями о выборе спецификации для отображения страницы, и может представить страницу совершенно неожиданным для веб-мастера образом. Если разметка страницы составлена абсолютно верно и не содержит ошибок, то больших сюрпризов, конечно, не возникнет. Но если в разметке есть ошибки, то, уважаемый веб-мастер, пеняй на себя! Причем пеняй столько раз, сколько ты будешь открывать страницу в разных браузерах. Ведь у каждого браузера может быть своя версия о спецификации. Поэтому гораздо проще указать doctype в верхней строке html-файла и не переживать о том, что в Mozille страница отображается иначе, чем в Opere. Тем более, что сейчас объявление doctype не требует громоздких строк типа:

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

как это было в случае использования веб-мастером строгого синтаксиса HTML версии 4.01. А если вдруг в html-файле появились фреймы, то doctype этой же 4.01 версии приобретал уже немного другие очертания:

<!DOCTYPE HTML PUBLIC «-//W3C//DTD HTML 4.01 Frameset//EN» «http://www.w3.org/TR/html4/frameset.dtd»>

Согласитесь, запомнить такое количество букв проблематично. Иное дело — лаконичный doctype, появившийся с приходом HTML5:

<!DOCTYPE html>

Что означает: тип документа — html.И запомнить легко, и написать не жалко. Единственный вопрос, возникающий в голове искушенного веб-мастера: почему doctype для 5 версии HTML так сильно отличается от doctype предыдущих версий?

Почему DOCTYPE для HTML5 так отличается от DOCTYPE для прошлых версий HTML?

Все просто: с момента появления HTML5 предполагается, что стандарты для следующих версий не будут меняться. То есть элементы с развитием HTML будут отображаться в браузере по уже описанным в спецификации правилам, поэтому нет необходимости менять стандарты и плодить их новые версии. Разумней дополнять текущий стандарт правилами для новых элементов. Таким образом, стандарт html превратился в «живой стандарт», который растет по мере развития языка HTML. А браузер, прочитав строку <!DOCTYPE html>, больше не пытается угадать с определением версии, а отображает страницу по правилам текущей спецификации.

Таким образом, разумный подход, подкрепленный логическими выводами, облегчает жизнь не только людям, но и браузерам ;-).

Добавить комментарий