Css 绝对定位,溢出滚动,动态元素

Css 绝对定位,溢出滚动,动态元素,css,Css,我正在用CSS创建一个复杂的布局,必须具备以下功能: __________________________________________ | | | | | filters | | |___________________________________| | | | |

我正在用CSS创建一个复杂的布局,必须具备以下功能:

__________________________________________
|     |                                   |
|     |              filters              |
|     |___________________________________|
|     |                                   |
|     |              Toolbar              |
|     |___________________________________|
| nav |                                   |
|     |                                   |
|     |                                   |
|     |         Content (scroll)          |
|     |                                   |
|     |                                   |
|_____|___________________________________|
导航是静态的,所以总是显示。内容区域本身是可滚动的。工具栏也总是在那里。然而,过滤器部分应该是动态的,如果它丢失了,那么工具栏/内容应该向上移动,并占用过滤器曾经占用的空间

内容区域为位置:绝对;带有overflow:auto,看起来很像谷歌阅读器。问题是我需要做正确的事情:0;排名:0;左:0;和底部:0以使滚动正常工作

你知道我如何实现一个滚动的内容区域,它不会显示在工具栏/过滤器的顶部吗?如果删除了过滤器部分,那么所有内容都会自动向上移动,而无需指定额外的CSS来进行补偿

干杯


编辑:好的,为了让它更简单,有人能告诉我如何使用CSS实现Google Reader的布局,如果你在工具栏上引入新工具,导致工具栏高度调整,内容区域会自动向下移动吗?

这样的东西适合你的需要吗

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <title>Untitled Document</title>
        <style type="text/css">
            body {
                margin: 0;
                padding: 0;
            }
            #nav {
                position: fixed;
                float: left;
                width: 25%;
                background-color: #F00;
            }

            #filters {
                float: right;
                width: 75%;
                background-color: #FF0;
            }

            #toolbar {
                float: right;
                width: 75%;
                height: 70px;
                background-color: #00F;
            }

            #content {
                float: right;
                width: 75%;
                background-color: #0FF;
                overflow-y: scroll;
                min-height: 400px;
            }

        </style>
    </head>
    <body>

        <div id="nav">this is the nav</div>

        <div id="filters">filters</div>
        <div id="toolbar">topbar</div>
        <div id="content">content</div>

    </body>
</html>

无标题文件
身体{
保证金:0;
填充:0;
}
#导航{
位置:固定;
浮动:左;
宽度:25%;
背景色:#F00;
}
#过滤器{
浮动:对;
宽度:75%;
背景色:#FF0;
}
#工具栏{
浮动:对;
宽度:75%;
高度:70像素;
背景色:#00F;
}
#内容{
浮动:对;
宽度:75%;
背景色:#0FF;
溢出y:滚动;
最小高度:400px;
}
这是导航
过滤器
顶栏
内容

基本上是两列布局。如果您让内容的大小填充剩余区域,而不是完全定位它,则应该消除该问题。整个页面上唯一可滚动的区域是内容区域,但它应该是溢出的:auto;。导航部分也是溢出:自动,因为它应该能够垂直滚动。您必须绝对定位它才能执行溢出:自动,否则它无法滚动:/虽然我还没有尝试过,但我不明白,如果工具栏和过滤器部分的高度固定,为什么内容区域的高度为80%?当然,当工具栏/过滤器不在时,它应该是100%的高度来填补空白?这很接近,但内容区域需要始终填满整个空间。@Kezzer,啊!但是,您必须将Java脚本插入其中,或者坚持使用表。你可以得到100%的高度与DIV的。在另外80%的事情上,你的正确。。。我大惊小怪,忘了删除这些值。