在过去的几个小时里,我一直在猛烈地撞墙,想办法实现我想要的webapp布局。我的头疼。
基本上我需要的是一个完整的窗口布局(全宽,全高,无滚动 - 永远)。应使用两个不同的水平框覆盖100%的宽度和高度(您可以将它们视为行)。
现在更棘手的是,在第二个框/行中,我希望内容以内部垂直滚动显示。想象一下,第二个框/行包含一个项目列表,如果项目非常少,则框/行的底部应该在内容之后停止。在许多物品的情况下,盒子/行应该向右扩展,直到它达到窗口高度的100%(这基本上是窗口的100% - 第一个盒子/行所占据的高度)。通过在第二个框/行中滚动,可以看到其余内容。
我有意义吗?
关于代码,我不会复制/粘贴我已经拉到一起的灾难性的东西,因为我宁愿从空白页面开始。
这就是我的尝试:
<html>
<body>
<div id="wrapper">
<div class="box">Header</div>
<div class="box">Content <ul><li>...</li>(x1000)</ul></div>
</div>
</body>
</html>
我使用“box”类的原因是因为两个框/行应该在背景,边距,阴影等方面显示相同的外观。
html, body {
height: 100%;
}
#wrapper {
position: absolute;
height: 100%;
width: 100%;
left: 15px;
right: 15px;
top: 15px;
bottom: 15px;
}
对于其他人,我刚试过(并且到目前为止失败)通过添加有害.box
等来操纵overflow: hidden; overflow-y: scroll; height: 100%; max-height: 100%; min-height: 100%;
元素。
提前感谢您的帮助!
答案 0 :(得分:1)
问题是因为CSS长期以来一直很难将高度自动调整到可用空间。
解决方案是使用一个设置为position: absolute
的包装器并绑定到视口的顶部,左侧,右侧和底部边缘。有了这个,浏览器将自动调整元素的高度,如果你的内容div里面有height: 100%
,它将始终填充该空间。
在包装器上设置overflow-y: scroll
将允许内容在内容过长时滚动:
http://codepen.io/helion3/pen/jwbcx
网站标题的高度通常不变。如果您使用百分比定义网站标题,并且如果您不需要支持IE&lt; 8,则可以使用box-sizing: border-box
安全地使用百分比来实现相同目标。
答案 1 :(得分:0)
我相信这应该可以解决问题。
如果您调整.header
的高度,请使其等于top:
.content
位置
html, body {
margin: 0;
}
.header {
height: 150px;
background: #0080ff; // (Unnecessary, this is set to help you see the header div)
}
.content {
position: absolute;
top: 150px;
bottom: 0;
left: 0;
right: 0;
overflow: auto;
background: #ff8000; // (Unnecessary, this is set to help you see the content div)
}
<body>
<div id="wrapper">
<div class="box header">Header</div>
<div class="box content">Content</div>
</div>
</body>
答案 2 :(得分:0)
也许你想要像this这样的东西?我将class="box"
替换为id
,但它应该有效。
答案 3 :(得分:0)
考虑以下事项:
您可以在此处查看解决方案: http://webnflash.com/temp/occupyAvailableHeight.htm