Назад к вопросам
Middle
90
questionbank

Что такое режим совместимости (quirks mode) в браузерах?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Режим совместимости — это режим работы браузера, в котором он эмулирует поведение более старых версий, игнорируя современные веб-стандарты (HTML5, CSS3). Это нужно для корректного отображения старых веб-страниц, написанных без соблюдения стандартов или для определённых версий Internet Explorer.

Браузер определяет режим рендеринга по наличию и содержимому DOCTYPE:

  • Quirks mode: Активируется, если DOCTYPE совсем отсутствует или имеет некорректный формат (например, устаревшие DOCTYPE для HTML 4.01 Transitional без URI системного идентификатора). В этом режиме браузер применяет нестандартные правила рендеринга, например, обрабатывает width и height для box-sizing как border-box, даже без явного указания.
  • Standards mode: Активируется при наличии валидного DOCTYPE (например, <!DOCTYPE html>). Браузер строго следует веб-стандартам.
  • Almost standards mode: Промежуточный режим, активируется при определённых DOCTYPE (например, для HTML 4.01 Transitional с URI системного идентификатора). Близок к стандарту, но имеет незначительные отличия (например, обработка вертикальных отступов табличных ячеек).

Примеры некорректного DOCTYPE, вызывающие quirks mode:

<!-- Отсутствие DOCTYPE -->
<html>
  <body></body>
</html>
<!-- Неполный DOCTYPE -->
<!DOCTYPE html SYSTEM "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <body></body>
</html>

Пример валидного DOCTYPE, вызывающий standards mode:

<!DOCTYPE html>
<html>
  <body></body>
</html>

Работа в режиме совместимости крайне нежелательна для современной разработки, так как приводит к непредсказуемому поведению CSS, JavaScript и проблемам с отображением в разных браузерах. Всегда необходимо использовать <!DOCTYPE html>.