Свойство CSS height
, процентные значения и DOCTYPE
На первую часть вашего вопроса о том, как применить 100%-ную высоту к вашему div
, другие отвечали несколько раз. По сути, объявите высоту корневого элемента:
html { height: 100%; }
Полное объяснение можно найти здесь:
Вторая часть вашего вопроса привлекла гораздо меньше внимания. Я постараюсь ответить на это.
Почему после удаления doctype
[зеленый фон] работает?
Когда вы удаляете DOCTYPE (объявление типа документа), браузер переключается из стандартного режима strong> в причудливый режим.
В режиме совместимости, также известном как режим совместимости, браузер имитирует старый браузер, чтобы он мог анализировать старые веб-страницы, созданные до появления веб-стандартов. Браузер в специальном режиме притворяется IE4, IE5 и Navigator 4, чтобы он мог отображать старый код так, как задумал автор.
Вот как Википедия определяет режим совместимости:
В компьютерных технологиях особый режим относится к методу, используемому некоторыми веб-браузерами для обеспечения обратной совместимости с веб-страницами, разработанными для старых браузеров, вместо строгого соблюдения стандартов W3C и IETF в стандартном режиме.
Вот мнение MDN:
В старые времена Интернета страницы обычно писались в двух версиях: одна для Netscape Navigator и одна для Microsoft Internet Explorer. Когда веб-стандарты были созданы в W3C, браузеры не могли просто начать их использовать, поскольку это нарушило бы работу большинства существующих веб-сайтов. Поэтому браузеры представили два режима, чтобы обрабатывать новые сайты, соответствующие стандартам, иначе, чем старые устаревшие сайты.
Теперь, вот конкретная причина, по которой height: 100%
в вашем коде работает в необычном режиме, но не в стандартном режиме:
В режиме стандартов, если родительский элемент имеет height: auto
(высота не определена), то процентная высота дочерних элементов также будет рассматриваться как height: auto
(в соответствии с спец.).
Вот почему ответ на ваш первый вопрос html { height: 100%; }
.
Чтобы height: 100%
работало в вашем div
, вы должны установить height
для родительских элементов (подробнее).
Однако в специальном режиме, если родительский элемент имеет height: auto
, то процент высоты дочерних элементов измеряется относительно области просмотра.
Вот три ссылки, описывающие это поведение:
TL;DR
Вот что нужно знать разработчикам в двух словах:
Браузер в необычном режиме будет отображать веб-страницы непредсказуемым, ненадежным и часто нежелательным образом. Поэтому всегда указывайте DOCTYPE, чтобы документ отображался в стандартном режиме< /а>.
Раньше выбор правильного DOCTYPE был двусмысленным и несколько запутанным процессом с множеством версий DOCTYPE на выбор. Но сегодня этот процесс прост как никогда. Просто используйте:
<!DOCTYPE html>
person
Michael Benjamin
schedule
25.08.2015