CSS框拉伸占据所有可用空间

时间:2010-08-07 16:41:15

标签: css layout liquid-layout

所以我正在尝试创建这种布局。

以下是构成页面的3个“框”的图片:https://dl.dropbox.com/u/9699560/layout.jpg

这是我的尝试:https://dl.dropbox.com/u/9699560/map.html

红色框是Google地图,因此如果未指定其高度,则会缩小为零。我想要做的是以下几点:

绿色框是固定宽度,固定高度。蓝色框应占据页面垂直高度的20%,最大高度为100px。红色框应占据所有剩余的垂直空间。

如果有人能解决这个问题,我想更进一步,这样当浏览器窗口垂直扩展而蓝框的顶部达到绿色框底部的水平时,它会向左扩展占据100%的页面宽度。

我尝试了浮点数,绝对和相对定位,我无法使用纯CSS。如果必须,我将使用JavaScript,但我想避免这种情况,除非它是唯一的选择。

谢谢!

这是一次尝试(如果您使用它,请删除评论):

html, body {
    margin: 0;
    padding: 0;
    height: 100%;
}

#nav {
    position: relative;
    width: 200px;
    height: 400px;
    background-color: green;
}

#map {
    position: absolute;
    top: 0;
    left: 200px;
    right: 0;
    height: 80%; // If #footer is 200px, should occupy all available space
    background-color: red;
}

#footer {
    position: absolute;
    left: 200px; // Should "become" 0 when window height pulls it past #nav
    right: 0;
    bottom: 0;
    height: 20%;
    max-height: 100px;
    background-color: blue;
}

和HTML

<html>
    <head></head>
    <body>
        <div id="nav"></div>
        <div id="map"></div>
        <div id="footer"></div>
    </body>
</html>

1 个答案:

答案 0 :(得分:0)

在我看来,您需要使用JavaScript来实现这一点。

我的起点可能来自此标记,可能会在调整大小时触发的事件处理程序中实现最小/最大高度行为:

<强> CSS

html, body { margin: 0; padding: 0; }
#nav { background-color:green; width: 200px; height: 400px; float:left; }
#map { background-color:red; height: 80%; margin-left: 200px; }
#footer { background-color: blue; height:20%; }

<强> HTML

<div id="nav">nav content</div>
<div id="map">map content</div>
<div id="footer">footer content</div>