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



我正在玩一个iframe,它嵌入了第二个页面,只是在iframe上面显示一个短标题。

在一个测试设置中,height="100%"工作正确,在另一个设置中它没有,然后我注意到不同之处在于一个文档,其中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?

因为该页面使用有效的DTD以标准模式呈现。它在另一种模式下工作的原因是因为它是在怪癖模式下。

它在quirks模式下工作的原因是因为过去的浏览器非常宽松而不严格,因此过去人们在html/body上没有指定高度的情况下做height="100%"

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

iframe也可能需要是直接子元素,这样才会发生这种情况。或者你也可以将它定位为绝对/固定。

最新更新