为什么iframe高度100%在XHTML页面中不起作用?

时间:2011-07-15 14:22:37

标签: html iframe xhtml height

我正在使用嵌入第二页的iframe,只在iframe上方显示一个简短的标题。

在一个测试设置中,height="100%"正常工作,在另一个设置中没有,然后I noticed that区别在于iframe高度始终设置为约150px的一个文档是XHTML文档及其工作原理的文档没有设置DOCTYPE。

所以,这有效:(高度完全缩放到窗口)

<html>
<head> </head>
<body>
<h1>Wrapper Header ...</h1>
<hr/>
<iframe src="/jenkins" width="100%" height="100%">
  <p>iframes not suppoerted</p>
</iframe>
</body>
</html> 

并且此(高度约150px左右)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head> </head>
<body>
<h1>Wrapper Header ...</h1>
<hr/>
<iframe src="/jenkins" width="100%" height="100%">
  <p>iframes not suppoerted</p>
</iframe>
</body>
</html>

IE8和FF5中的显示相同。

为什么如果我有XHTML doctype,高度百分比不再有效?

1 个答案:

答案 0 :(得分:13)

因为页面在标准模式下呈现有效的DTD。它在其他模式下工作的原因是因为它处于怪癖模式。

它在怪癖模式下工作的原因是因为浏览器在过去非常宽松且不严格,因此人们在{h} / body之前没有指定高度height="100%"

现在正确的方法是在html / body上设置高度。尝试类似html, body { height:100%; }

的内容

iframe也可能需要成为直接子项才能实现此目的。或者你可以绝对/固定它。