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

источник

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