Пропустить навигацию

Highe® — Веб и стандарты


Стандартный режим, режим обратной совместимости и DOCTYPE

13.03.08

Реализация CSS в старых браузерах связана с рядом недостатков, таких как, частичная поддержка спецификации, в некоторых случаях реализации определенных особенностей CSS, не соответствующих спецификации.

Современные браузеры великолепно поддерживают последнюю спецификацию CSS, включая дополнительные особенности, не входящие в ее состав, но которые вполне возможно появятся в будущем.

Из-за недостатков поддержки CSS старыми браузерами, ранние таблицы стилей создавались с учетом этих особенностей, в то время, как современные браузеры соответствуют спецификации CSS. Перед создателями новых версий браузеров возникла дилемма — в стремлении поддерживать стандарты CSS, миллионы созданных ранее страниц становились непригодными и несоответствующими спецификации.

Решение данной проблемы заключалось в том, чтобы определить, как создан документ и выбрать режим его отображения на основе типа декларации SGML или doctype declaration непосредственно в самой разметке. Декларация типа документа содержит название корневого элемента, обычно ссылается на определение типа документа (DTD) и включает в себя семантические правила языка разметки. До определенного времени браузеры игнорировали декларацию типа документа и главном образом она была необходима для прохождения валидации.

Процесс, при котором браузер выбирает режим отображения документа называется doctype sniffing (или переключение типа документа), был впервые реализован в Microsoft Internet Explorer 5 для Mac OS. Сегодня переключение типа документа используется в Opera (версии 7 и выше), Firefox, в браузерах на движке Gecko, Safari, Internet Explorer 6 и 7, а также Konqueror (версии 3.2 и выше).

Если браузер определяет документ как «современный», он отображает его в стандартном режиме (standards mode). Это значит, что таблицы стилей, использующиеся в документе соответствуют спецификации CSS2.

Если браузер определяет, что документ написан по правилам т.н. старой школы, он отобразит его в режиме совместимости (quirks mode). В режиме совместимости браузер игнорирует часть правил CSS, имитируя поведение старого движка. Режим совместимости работает по разному и зависит от браузера.

Opera (версии 7 и выше), Firefox и Safari имеют третий режим, который называется режим, приближенный к стандартному (almost standards mode), в котором расположение рисунков в ячейках таблицы отображается в режиме совместимости. Во всех остальных случаях этот режим эквивалентен стандартному режиму. В этом режиме используется метод выравнивания разрезанных изображений в таблице. Этот метод соответствует стандартному режиму в Internet Explorer 6 и 7, Internet Explorer 5 для Mac OS and OS X, Konqueror и Opera versions до версии 7.5. В соответствии со спецификацией CSS2 эти браузеры не поддерживают вертикальное выравнивание в ячейке таблицы, поэтому стандартный режим в этих браузерах является отчасти стандартным.

Переключение типа документа предназначено только для документов, с указанием MIME-типа text/html. Указание MIME-типа XML, включая application/xhtml+xml автоматически вызывает стандартный режим.

Переключение типа документа

Посмотрим как работает переключение типа документа и какие декларации вызывают стандартный режим, режим совместимости и частично стандартный режим. Определение типа документа для HTML и XHTML содержит строку PUBLIC, за которой следует формальный идентификатор formal public identifier (FPI). За ним может следовать системный идентификатор formal system identifier (FSI), который является указателем ресура URL для DTD.

Пример, содержащий FPI и FSI:

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

Пример, содержащий только FPI:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

Тип документа переключается путем определения этих частей в декларации типа документа. Если указан формальный идентификатор и не указан системный, браузер переключается в режим совместимости и отображает страницу, имитируя поведение старого движка. Режим совместимости включается также при отсутствии декларации типа документа.

Если указаны и формальный и системный идентификаторы, браузеры, поддерживающие два режима, отображают страницу в стандартном режиме. Браузеры с тремя режимами проверяют DTD. Для DTD HTML 4.0 Strict, HTML 4.01 Strict и XHTML 1.0 Strict включается стандартный режим. Transitional DTD включает частично стандартный режим для MIME-типа text/html.

В Internet Explorer 6 используется примитивный метод переключения типа документа, предполагающий, что декларация типа должна находится в самой первой строке документа. Комментарий SGML перед декларацией типа документа, также как и декларация XML, включит режим совместимости, даже для XHTML 1.0 Strict. Следующая запись выключает режим совместимости в IE6 (но не в IE7) для MIME-типа text/html:

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

Подробнее о переключении типов в различных браузеров см. http://hsivonen.iki.fi/doctype/.

Комментарии

 

 


CSS Styleguide — улучшение читабельности кода

Перевод статьи Improving Code Readability With CSS Styleguides с рекоммендациями по организации СSS файлов и написанию стильгайдов.

дальше →

Media-запросы

Media-запросы это расширение CSS3 для различных media-типов, позволяющее контролировать отображение документа в зависимости от устройства

дальше →

Стандартный режим, режим обратной совместимости и DOCTYPE

Еще раз хочу вернуться к данным режимам, их выбору, переключению и DOCTYPE

дальше →

Полезные CSS хаки

Несколько хаков, которые могут пригодиться

дальше →

Все статьи

бизнес, браузеры, веб-стандарты, верстка, дизайн, мобильные устройства, редакторы, фотогалерея, alistapart, css, css3, email, html email, javascript, photoshop, png, progressive enhancement, svg, textmate, textpattern, usability, validation, vml

Полезные ссылки

23.09.08

  • Using jQuery for Background Image Animations
  • jParallax
  • Test your color IQ
  • 80 Large Background Websites
  • 20 Free Page Analysis Tools