主要动态扩展

时间:2015-02-23 12:42:51

标签: html css layout

我试图为我的主页设置一个简单的布局 这就是我希望它的样子:

layout

不幸的是,我在指定main div的大小时遇到​​了困难。我想让它动态扩展,包括高度和宽度。所以它应该"填充"其余内容未由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/

3 个答案:

答案 0 :(得分:2)

首先重置:

* {margin:0;padding:0}

100%代码和主要容器body, html上使用.container后:

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

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

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

DemoFiddle

答案 1 :(得分:0)

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

链接到Fiddle

这是使内容动态化的一种简单方法,将float设置为侧边栏。 但我认为你需要做出更多改变,在页面底部设置页脚(页脚将始终位于页面的末尾),这样你就可以使事物看起来更具吸引力。

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

答案 2 :(得分:0)

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

&#13;
&#13;
* {
    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%;
}
&#13;
<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>
&#13;
&#13;
&#13;