Понимание режимов quirks и стандартов
В первые годы существования веба страницы обычно создавались в двух версиях: одна для Netscape Navigator, другая для Microsoft Internet Explorer. Когда W3C разработал веб-стандарты, браузеры не могли просто начать их использовать, поскольку это нарушило бы работу большинства существующих сайтов. Поэтому браузеры ввели два режима, чтобы обрабатывать сайты, соответствующие новым стандартам, иначе, чем старые сайты.
Сейчас движки компоновки веб-браузеров используют три режима: режим quirks, режим ограниченного quirks и режим без quirks. В режиме quirks компоновка имитирует поведение Navigator 4 и Internet Explorer 5. Это необходимо для поддержки сайтов, созданных до широкого распространения веб-стандартов. В режиме без quirks поведение (как мы надеемся) соответствует тому, которое описано в современных спецификациях HTML и CSS. В режиме ограниченного quirks реализовано лишь очень небольшое количество особенностей.
Раньше режимы ограниченного quirks и без quirks назывались соответственно режимом «почти соответствия стандартам» и режимом «полного соответствия стандартам». Эти названия изменили, поскольку теперь такое поведение стандартизировано.
Как браузеры определяют, какой режим использовать?
Для документов HTML браузеры используют doctype в начале документа, чтобы определить, обрабатывать его в режиме quirks или в режиме без quirks. Чтобы страница использовала режим без quirks, укажите в ней doctype, как в этом примере:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Hello World!</title>
</head>
<body></body>
</html>
Показанный в примере doctype, <!doctype html>, — самый простой из возможных и рекомендованный действующими стандартами HTML. В более ранних версиях стандарта HTML рекомендовались другие варианты, но сегодня все существующие браузеры используют режим без quirks для этого doctype. Нет веских причин использовать более сложный doctype. Если вы используете другой doctype, то рискуете выбрать такой, который включает режим ограниченного quirks или режим quirks.
Поместите doctype в самое начало HTML-документа, перед любым другим содержимым.
Единственная цель <!doctype html> — включить режим без quirks. Doctype в старых версиях стандарта HTML имел дополнительное значение, однако браузеры использовали doctype только для переключения между режимами отображения.
См. также подробное описание того, когда разные браузеры выбирают различные режимы.
XHTML
Если вы передаёте страницу как XHTML, используя MIME-тип application/xhtml+xml в HTTP-заголовке Content-Type, указывать doctype для включения режима без quirks не нужно, поскольку такие документы всегда используют этот режим.
Если вы передаёте содержимое, похожее на XHTML, используя MIME-тип text/html, браузеры будут читать его как HTML, и для использования режима без quirks потребуется doctype.
Как узнать, какой режим используется?
Если страница отображается в режиме quirks или ограниченного quirks, Firefox выведет предупреждение на вкладку консоли в инструментах разработчика. Если предупреждение не отображается, Firefox использует режим без quirks.
Значение document.compatMode в JavaScript показывает, находится ли документ в режиме quirks. Если его значение равно "BackCompat", документ находится в режиме quirks. В противном случае его значение будет "CSS1Compat".
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTML/Guides/Quirks_mode_and_standards_mode