Div 100%的高度适用于Firefox,但不适用于IE
我有一个容器div,里面有两个内部div。 容器内的宽度和高度均应为100%。
我将两个内部div设置为100%的高度。 这在Firefox中运行正常,但是在IE中,div并不能伸展到100%的高度,而只是其中的文本的高度。
以下是我的样式表的简化版本。
#container { height: auto; width: 100%; } #container #mainContentsWrapper { float: left; height: 100%; width: 70%; margin: 0; padding: 0; } #container #sidebarWrapper { float: right; height: 100%; width: 29.7%; margin: 0; padding: 0; }
有什么我做错了吗? 或者我错过了任何Firefox / IE的怪癖?
我认为“在Firefox中正常工作”只在Quirks模式下呈现。 在标准模式下渲染,在Firefox中也可能无法正常工作。
百分比取决于“包含块”,而不是视口。
CSS规范说
百分比是根据生成的包含盒子的高度来计算的。 如果包含块的高度没有明确指定(即,取决于内容高度),并且该元素没有被绝对定位,则该值计算为“auto”。
所以
#container { height: auto; } #container #mainContentsWrapper { height: n%; } #container #sidebarWrapper { height: n%; }
手段
#container { height: auto; } #container #mainContentsWrapper { height: auto; } #container #sidebarWrapper { height: auto; }
要扩展到视口的100%高度,需要指定包含块的高度(在本例中为#container)。 此外,还需要指定body和html的高度,因为初始的Containing Block是“UA依赖的”。
所有你需要的是…
html, body { height:100%; } #container { height:100%; }
我不知道你正在解决什么问题,但是当我有两个并排的容器需要相同的高度时,我运行一个页面加载一个小的JavaScript,find两个最大的高度,明确地设置另一个相同的高度。 在我看来,当你真正想要的是“同时制作最大容量的内容”时,100%的高度可能意味着“将内容全部容纳”。
注意:如果页面上发生任何事情来改变它们的高度,你将需要重新调整它们的大小 – 就像validation摘要被显示或可折叠菜单打开一样。
它很难给你一个很好的答案,没有看到你实际使用的HTML。
你正在输出一个文档types/使用标准模式渲染? 没有真正能够看到一个HTML repro,这将是我的Firefox和Internet Explorer之间的HTML解释区别的第一个猜测。
当我将容器边距设置为0时,我已经成功地实现了这个function:
#container { margin: 0 px; }
除了你所有的其他风格
你可能不得不把一个或两个:
html { height:100%; }
要么
body { height:100%; }
编辑:哎呀,没有注意到他们漂浮。 你只需要漂浮容器。
我做了一些与tvanfosson非常相似的事情,也就是说,实际上使用JavaScript通过像onresize这样的事件不断监视窗口中的可用高度,并使用这些信息相应地更改容器大小(以像素而不是百分比)。
请记住,这确实意味着JavaScript的依赖,并不像CSS解决scheme那样stream畅。 您还需要确保JavaScript函数能够正确返回所有主stream浏览器的窗口大小。
让我们知道如果之前提到的CSS解决scheme之一工作,因为这听起来像一个更好的方法来解决这个问题。
我不认为IE支持使用自动设置高度/宽度,所以你可以尝试给这个数字值(如Jarettbuild议)。
另外,它看起来不像你正在清理你的花车。 尝试添加到您的CSS#容器:
#container { height:100%; width:100%; overflow:hidden; /* for IE */ zoom:1; }
尝试这个..
#container { height: auto; min-height:100%; width: 100%; } #container #mainContentsWrapper { float: left; height: auto; min-height:100% width: 70%; margin: 0; padding: 0; } #container #sidebarWrapper { float: right; height: auto; min-height:100% width: 29.7%; margin: 0; padding: 0; }