html - 为什么某些 DOCTYPE 声明会导致 100% 高度的表格和 div 停止工作?

标签 html doctype quirks-mode transitional

在我看来,IE (6-8) 中的某些 DOCTYPE 声明可能会导致浏览器忽略表格和 div 上的 height="100%" (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,它不会拉伸(stretch)。删除 DOCTYPE 声明会导致 DIV 根据需要垂直拉伸(stretch)。

所以我的问题是:

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

最佳答案

  1. 因为古代浏览器有奇怪的、不一致的行为,而且浏览器对待 Doctypes 的方式类似于 an intelligence test看看作者是根据标准编写代码还是根据他们十年前从 W3School 学到的东西编写代码。如果您有 height: 100% 并且父元素的高度为 auto 那么 100% means auto .

  2. 通常,您不需要。它尖叫着“layout table”。也就是说,在 html 和 body 元素上设置高度或最小高度。还有其他技术,但我目前没有方便的链接,因为奇怪的是,我从来没有处于需要该技术的位置。

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

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

关于html - 为什么某些 DOCTYPE 声明会导致 100% 高度的表格和 div 停止工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1997842/

相关文章:

html - 为什么谷歌浏览器会忽略 li 的 'direction' ?

javascript - 使用 CSS3 缩放属性时检测 IE 中的实际窗口大小

html - 声明 &lt;!doctype html> 添加 2px padding-top 到字体元素

css - &lt;!DOCTYPE html> 导致页眉和页脚中断

html - IE <DOCTYPE html> 默认为 quirksmode

javascript - 自定义过渡彩色菜单

css - Razor View 引擎数据输入表单

internet-explorer - Internet Explorer 11 是否还有怪癖模式?

html - 怪癖模式下的 IE7 CSS Z-Index 问题

javascript - 如何获取并显示对象中每个单词的计数?