Main Div 动态扩展

Main Div expand dynamically

我正在尝试为我的主页设置一个简单的布局。
这就是我想要的样子:

不幸的是,我很难指定 main div 的大小。我希望它动态扩展,包括高度和宽度。所以应该"fill"剩下的内容,没有被menufooter.

填满

HTML:

<body>
    <div class="container">
        <div class="nav">
            <ul>
                <li>Link 1</li>
                <li>Link 2</li>
                <li>Link 3</li>
            </ul>
        </div>
        <div class="main">
           Text...
        </div>
        <div class="footer">
            Footer
        </div>
    </div>
</body>

CSS:

.nav, .content{
    display: inline-block;
    vertical-align: top;
}
.nav{
    width: 200px;
    background-color: #ccc;
}
.main{
    height: 100%; /* something like 100% - 50px (height of footer) */
    width: 100%; /* something like 100% - 200px (width of menu) */
    overflow: hidden;
    background-color: #aabbcc;
}
.footer{
    background-color: #ff9999
}

你可以在这里找到一个例子:http://jsfiddle.net/48q5f4u9/3/

.nav{
    width: 200px;
    float: left;
    background-color: #ccc;
}

Link 到 Fiddle

这是使内容动态化的一种简单方法,将浮动设置为侧边栏。 但我认为你需要做更多的改变,将页脚设置在底部(页脚总是在页面的末尾),这样你可以让事情看起来更有吸引力。

希望这对您有所帮助,让我知道 ;)

首先重置:

* {margin:0;padding:0}

body, html 标签和主容器上使用 100%.container:

html,body, .container {
    height:100%;
}

然后使用calc()设置尺寸,如:

.main{
    height: calc(100% - 50px);
    width: calc(100% - 200px);
    overflow: hidden;
    background-color: #aabbcc;
}

DemoFiddle

您可以对主导航和导航使用粘性页脚和绝对和边框,并使用填充,因为它们具有定义的大小:

* {
    padding: 0;
    margin: 0;
}
html, body {
    height: 100%;
}
.main, .nav { 
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
}
.container {
    min-height: 100%;
    margin-bottom: -50px;
    overflow: hidden;
}
.nav {
    position: absolute;
    left: 0;
    padding-bottom: 50px;
    top: 0;
    width:200px;
    height: 100%;
    background: #1abc9c;
    z-index: 1;
}
.main {
    top: 0;
    width: 100%;
    height: 100%;
    padding: 0 0 50px 200px;
    background: #3498db;
    height: 100%;
    position: absolute;
    left: 0;
}
.container:after {
      content: "";
      display: block;
}
.footer, .container:after {
      height: 50px; 
}
.footer {
    position: relative;
    background-color: #e74c3c;
    z-index: 2;
    width: 100%;
}
<div class="container">
    <div class="nav">
        <ul>
            <li>Link 1</li>
            <li>Link 2</li>
            <li>Link 3</li>
        </ul>
    </div>
    <div class="main">
        Text...
    </div>
</div>
<div class="footer">
    Footer
</div>