Подтвердить что ты не робот

Почему определенные объявления DOCTYPE приводят к тому, что стоп-столы на 100% и деления перестают работать?

Мне кажется, что некоторые объявления DOCTYPE в IE (6-8) могут заставить браузер игнорировать height="100%" для таблиц и divs (style="height:100%")

например

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
 <title>Test1</title>
 </head>
 <body>
  <div style="border: 2px solid red; height: 100%">
  Hello World
  </div>
 </body>
</html>

Отобразит DIV с высотой текста, он не растянется. Удаление объявления DOCTYPE заставляет DIV растягиваться по вертикали по желанию.

Итак, мои вопросы:

  • Почему это происходит?
  • Как вы сохраняете DOCTYPE и все еще разрешаете таблицы растягиваться?
  • Делает ли это с вами?
  • Знаете ли вы об этом?, хорошо ли это известно?
4b9b3361

Ответ 1

  • Поскольку у древних браузеров было странное, непоследовательное поведение и браузеры рассматривали Doctypes, такие как тест интеллекта, чтобы узнать, пишет ли автор код стандарты или то, что они узнали из W3Schools десять лет назад. Если у вас height: 100%, а высота родительского элемента auto, то 100% означает auto.

    /li >
  • Как правило, вы этого не делаете. Он кричит " таблица макета". Тем не менее, установите высоты или минимальные высоты на элементы html и body. Существуют и другие методы, но на данный момент у меня нет удобной ссылки, так как, как ни странно, я никогда не был в такой ситуации, когда мне нужна была техника.

  • Это то, что должны делать браузеры, поэтому...

  • Хорошо, я отвечаю на этот вопрос...

Ответ 2

Реальное решение этой "проблемы" будет использовать следующий CSS:

html, body {
    margin: 0;
    padding: 0;
    border: none;
    height: 100%;
}

#mydiv {
    height: 100%;
}

Однако помните, что граница добавляет высоту.

Ответ 3

Когда вы удаляете doctype, браузер переходит в режим причуд, который по-разному влияет на более старый код, который не проверяется корректно.

Вы должны установить высоту в элементе контейнера, чтобы div со 100% высотой не наследовал высоту: auto;

Вы можете попробовать перейти от переходного к строгому, но я сомневаюсь, что это исправит вашу проблему.