Если вы разрабатывали веб-страницы более нескольких месяцев, вы, скорее всего, знаете о трудностях написания страницы, которая выглядит одинаково во всех браузерах . На самом деле это невозможно. Многие браузеры были написаны со специальными функциями, с которыми могли справиться только они. Или у них есть особые способы обработки вещей, которые отличаются от того, как их обрабатывают другие браузеры. Например:
- Слои были созданы для использования в браузерах Netscape. Они не работают ни в каком другом браузере и фактически устарели в Netscape 6.x +.
- Встроенные фреймы изначально создавались только для Internet Explorer и с тех пор стали частью спецификации HTML.
- Internet Explorer 6.0 добавляет дополнительный пробел (например, a
), окружающий теги, если только вы не пишете содержимое div в одну (длинную) строку. (IE 6 имеет много других причуд, а также этот.) - Netscpe 4.7 не будет отображать таблицы, которые не написаны в правильном HTML — вместо этого он показывает пустую страницу. Это было исправлено в Netscape 6.
Проблема для разработчиков браузеров заключается в том, что они должны создавать веб-браузеры, которые обратно совместимы с веб-страницами, созданными для старых браузеров. Чтобы решить эту проблему, создатели браузеров создали режимы для работы браузеров. Эти режимы определяются наличием или отсутствием элемента DOCTYPE и тем, что он DOCTYPE
вызывает.
Переключение DOCTYPE и «Режим причуд»
Если вы разместите на DOCTYPE
своей веб-странице следующее:
Современные браузеры (Android 1+, Chrome 1+, IE 6+, iOS 1+, Firefox 1+, Netscape 6+, Opera 6+, Safari 1+) интерпретируют это следующим образом:
- Поскольку там правильно написано
DOCTYPE
, это запускает режим стандартов. - Это HTML 4.01 Переходный документ
- Поскольку он находится в стандартном режиме, большинство браузеров отображают контент, совместимый (или в основном совместимый) с HTML 4.01 Transitional.
И если вы поместите это DOCTYPE
в свой документ:
Это говорит современным браузерам, что вы хотите отображать страницу HTML 4.01 в строгом соответствии с DTD. Эти браузеры перейдут в режим «строгого» или «стандартного» и отобразят страницу в соответствии со стандартами. (Таким образом, для этого документа такие теги могут быть полностью проигнорированы браузером, так как элемент FONT устарел в HTML 4.01 Strict.)
Если вы оставите DOCTYPE
его полностью, браузеры автоматически перейдут в режим «причуд».
В таблице ниже показано, что делают обычные браузеры, когда представлены разные общие DOCTYPE
объявления.
Microsoft делает это сложнее
В Internet Explorer 6 также есть функция, заключающаяся в том, что если вы поместите что-либо выше DOCTYPE
объявления, они перейдут в режим причуд. Итак, оба из этих примеров приведут IE 6 в режим причуд, даже если в DOCTYPE
декларациях говорится, что он находится в режиме строгих стандартов:
и XHTML 1.1 DOCTYPE
:
Плюс, если вы пройдете IE6, то у вас есть «особенность», которую Microsoft добавила в IE8 и IE9: META
переключение элементов и черный список сайтов. Фактически, эти две версии браузера теперь имеют до семи (!) Различных режимов:
- IE 5,5 причудливый режим (IE 8 и 9)
- Режим стандартов IE 7 (IE 8 и 9)
- IE 8 почти стандартный режим (IE 8 и 9)
- Режим стандартов IE 8 (IE 8 и 9)
- IE 9 почти стандартный режим (IE 9)
- Режим стандартов IE 9 (IE 9)
- Режим XML (IE 9)
В IE 8 также введен «Режим совместимости», в котором пользователь может изменить модель рендеринга обратно в режим IE 7. Так что , даже если вы установили режим , который вы хотите установить , используя как DOCTYPE
и META
элементы, ваша страница может все еще быть отброшена в меньшем режим соответствующих стандартов.
Что такое Quirks Mode?
Режим Quirks был создан, чтобы помочь справиться со всей странной поддержкой рендеринга и несовместимых браузеров, а также с хакерами, которые веб-дизайнеры использовали для решения этих задач. Беспокойство производителей браузеров заключалось в том, что если они переключат свои браузеры на полное соответствие спецификациям, веб-дизайнеры останутся позади. Настроив DOCTYPE
переключение и «Режим причуд», это позволило веб-дизайнерам выбирать, как они хотят, чтобы браузеры отображали их HTML.
Эффекты Quirks Mode
Есть несколько эффектов, которые большинство браузеров используют в режиме Quirks:
- В некоторых браузерах блочная модель меняется на IE 5.5 версии блочной модели в режиме причуд.
- Некоторые браузеры не наследуют стили в таблицах
- Режим Quirks существенно влияет на синтаксический анализ CSS и макета CSS. Если вы конвертируете страницы в стандартный режим из режима Quirks, обязательно протестируйте свой макет CSS и тщательно проанализируйте его.
- Следите за изменениями в сценариях, когда в режиме причуд.
id
Например, Firefox меняет способ работы атрибута. IE8 и IE9 очень сильно изменили сценарии в режиме причуд.
Есть также разница в режиме «Почти Стандарты»:
- Высота ячеек таблицы, внутри которых находятся только изображения, отличается от стандартного режима.
Как выбрать DOCTYPE
Я более подробно остановлюсь в моей статье DOCTYPE
List, но вот несколько общих правил:
- Всегда сначала выбирайте режим стандартов. И текущий стандарт, который вы должны использовать, это HTML5: если у вас нет конкретной причины избегать использования HTML5
DOCTYPE
, это то, что вам следует использовать. - Перейдите к строгому HTML 4.01, если вам нужно проверить устаревшие элементы или по какой-то причине хотите избежать новых функций:
- Если вы нарезали изображения в таблице и не хотите их исправлять, перейдите к Переходному HTML 4.01:
- Не пишите страницы намеренно в режиме причуд. Всегда используйте
DOCTYPE
. Это сэкономит вам время на разработку в будущем и действительно не принесет пользы. IE6 быстро теряет популярность, и, разрабатывая для этого браузера (что по сути и является дизайном в режиме «Причуды»), вы ограничиваете себя, своих читателей и свои страницы. Если вам нужно писать для IE 6 или 7, используйте условные комментарии для их поддержки, а не переводите современные браузеры в режим причуд.
Зачем использовать DOCTYPE
Как только вы узнаете, что DOCTYPE
происходит переключение такого типа , вы можете более непосредственно воздействовать на свои веб-страницы, используя знак, DOCTYPE
который указывает, что браузер может ожидать от вашей страницы. Кроме того, как только вы начнете использовать DOCTYPE
, вы будете писать HTML, который будет ближе к действительности (вы все равно должны его проверить). И, написав действительный XHTML, вы поощряете производителей браузеров создавать совместимые со стандартами браузеры.
Версии браузера и режим причуд
DOCTYPE |
Android Chrome Firefox IE 8+ iOS Opera 7.5+ Safari |
IE 6 IE 7 Opera 7 |
Netscape 6 |
---|---|---|---|
Никто | Причудливый режим | Причудливый режим | Причудливый режим |
HTML 3.2 | |||
Причудливый режим | Причудливый режим | Причудливый режим | |
HTML 4.01 | |||
переходный | Режим стандартов * | Режим стандартов * | Режим стандартов |
переходный | Причудливый режим | Причудливый режим | Причудливый режим |
строгий | Режим стандартов | Режим стандартов * | Режим стандартов |
строгий | Режим стандартов | Режим стандартов * | Режим стандартов |
HTML5 | |||
Режим стандартов | Режим стандартов * | Причудливый режим |