高度(最小高度)100%内容溢出时不工作?

时间:2013-10-12 16:22:24

标签: html css

我正在建立一个3列布局网站。 header将固定在顶部,nav将固定在左侧。然后包装器将包含mainaside。我想要的是主要的,旁边可以填充包装纸的高度。

这是我的CSS。你也可以看到我的jsFiddle http://jsfiddle.net/scarletsky/h8r2z/3/

* {
    margin: 0;
    padding: 0;    
}

html, body {
    width: 100%;
    height: 100%;
}

.header {
    width: 100%;
    height: 100px;
    position: fixed;
    top: 0;
    z-index: 9;
    background: red;
}

.nav {
    width: 20%;
    height: 100%;
    position: fixed;
    top: 100px;
    left: 0;
    background: green;
}

.wrapper {
    width: 80%;
    min-height: 100%;
    margin-top: 100px;
    margin-left: 20%;
    position: relative;
}

.main {
    width: 70%;
    min-height: 100%;
    position: absolute;
    left: 0;
    background: black;
}

.aside {
    width: 30%;
    min-height: 100%;
    position: absolute;
    right: 0;
    background: blue;
}

.u-color-white {
    color: white;
}

似乎他们可以很好地工作。但是当内容的高度在mainaside超过自己的高度时,它将无效。我不知道如何解决它。

任何人都可以帮助我吗? THX!

3 个答案:

答案 0 :(得分:3)

您的布局非常严格。一切都是固定的.. 如果你需要将标题从100px更改为120怎么办?你必须在很多不同的地方相应地改变它。

这是适用于您的布局的纯CSS解决方案,无需修复任何高度或宽度。 (如果你愿意,可以修改高度或宽度) 这种布局完全响应,并且跨浏览器。

如果你没有固定元素的高度/宽度,它们将完全符合他们的需要。

这是Working Fiddle

<强> HTML:

<header class="Header"></header>
<div class="HeightTaker">
    <div class="Wrapper">
        <nav class="Nav"></nav>
        <div class="ContentArea">
            <div class="Table">
                <div class="Main"></div>
                <div class="Aside"></div>
            </div>
        </div>
    </div>
</div>

<强> CSS:

* {
    margin: 0;
    padding: 0;
}
html, body {
    width: 100%;
    height: 100%;
}
body:before {
    content:'';
    height: 100%;
    float: left;
}
.Header {
    height: 100px;
    /*No need to fix it*/
    background-color: red;
}
.HeightTaker {
    position: relative;
}
.HeightTaker:after {
    content:'';
    display: block;
    clear: both;
}
.Wrapper {
    position: absolute;
    width: 100%;
    height:100%;
}
.Nav {
    height: 100%;
    float: left;
    background-color: green;
}
.ContentArea {
    overflow: auto;
    height: 100%;
}
.Table {
    display: table;
    width: 100%;
    height: 100%;
}
.Main {
    width: 70%;
    /*No need to fix it*/
    background-color: black;
    display: table-cell;
}
.Aside {
    width: 30%;
    /*No need to fix it*/
    background-color: black;
    display: table-cell;
    background-color: blue;
}
.u-color-white {
    color: white;
}

答案 1 :(得分:1)

这是一个非常常见的问题。我建议要么使用包装器的背景图像,使其看起来像在旁边有100%的最小高度或使用此网站上的方法: http://css-tricks.com/fluid-width-equal-height-columns/

答案 2 :(得分:0)

只看到这个小提琴......希望这就是你想要的......

.aside {
width: 30%;
min-height: 100%;
position:fixed;
right: 0;
background: blue;

}

http://jsfiddle.net/h8r2z/6/