为什么某些DOCTYPE声明导致100%-height表和div停止工作?

Era*_*dan 16 html doctype transitional quirks-mode

在我看来DOCTYPEIE(6-8)中的一些声明可能会导致浏览器忽略height="100%"表和div(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>
Run Code Online (Sandbox Code Playgroud)

将渲染DIV文本的高度,它不会拉伸.删除DOCTYPE声明会导致根据DIV需要垂直拉伸.

所以我的问题是:

  1. 为什么会这样?
  2. 你如何保持DOCTYPE仍然允许表拉伸?
  3. 这件事发生在你身上吗?
  4. 你知道吗?它是众所周知的吗?

Que*_*tin 10

  1. 因为古代浏览器具有奇怪的,不一致的行为,并且浏览器将Doctypes视为智能测试,以查看作者是否正在编写标准代码或者他们在十年前从W3Schools学到的内容.如果你有height: 100%,那么父元素的高度auto100%意味着auto.

  2. 一般来说,你没有.它尖叫" 布局表 ".也就是说,在html和body元素上设置高度或最小高度.还有其他技术,但我目前没有方便的链接,奇怪的是,我从来没有处过需要技术的位置.

  3. 这是浏览器应该做的,所以......

  4. 好吧,我正在回答这个问题......


MMM*_*MMM 8

这个"问题"的真正解决方案是使用以下CSS:

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

#mydiv {
    height: 100%;
}
Run Code Online (Sandbox Code Playgroud)

但请记住,边框会增加高度.