19

我正在尝试设计一个带有页眉的页面,一个延伸到 100% 垂直景观的主 div(减去页眉和页脚)和一个页脚。像这张照片:

在此处输入图像描述

我可以让标题和主 div 工作。像这样:

    <div id="wrapper">

        <div class="header_div">HEADER</div>
        <div class="main_div">MAIN</div>
        <div class="footer_div">FOOTER</div>

    </div>

使用这个 CSS:

html {
    height: 100%;
 }

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

.header_div{

    height: 40px;
    width: 100%;
    background-color: #000000;

}

.main_div{

    margin-bottom:40px;
    margin-top:40px;
    position:absolute;
    top:0px;
    left:0px;
    right:0px;
    bottom:0px;
    background-color: red;
}


.footer_div{

    position: relative;
    height: 40px;
    width: 100%;
    background-color: blue;
}

所以主 div 从顶部开始 40px 以说明页眉,然后从底部停止 40px 以说明页脚。这很好用,但我无法让页脚 div 显示在主 div 下方。它现在的方式是position: relative将页脚放在主 div 的顶部。如果我使用position:absolute它将它放在主 div 下方。

我确信我做错了,因为 CSS 不是我的事。

对此的任何帮助都会很棒。

谢谢

4

3 回答 3

31

使用 CSS3弹性盒

/*QuickReset*/*{margin:0;box-sizing:border-box;}


body {                /* body - or any parent wrapper */
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}

main {
  flex: 1;
}
<header>HEADER</header>
<main>MAIN</main>
<footer>FOOTER</footer>

于 2013-06-11T21:38:26.907 回答
2

使用 css calc() 函数。

使用此方法,您不必定义元素的位置

这是一个演示

html:

<header>Header</header>
<main>Main</main>
<footer>Footer</footer>

CSS:

html, body { 
    height: 100%
}

body {
    color: #FFF;
    padding: 0;
    margin: 0;
}

header { 
    background-color: #000;
    height: 100px;    
}

main { 
    background-color: #AAA;
    height: calc(100% - 150px);    
}

footer { 
    background-color: #000;
    height: 50px;    
}
于 2015-07-13T19:13:36.643 回答
-1

这是一个简单的方法。试试这个jsfiddle:http: //jsfiddle.net/PejHr/

HTML:

<div id="top"></div>
<div id="main">
    <div id="inner"></div>
</div>
<div id="bottom"></div>

CSS:

#main {
    width: 100%;
    height: 100%;
    position: absolute;
    left: 0px;
    top: 0px;
    padding: 50px 0px
}
#inner {
    width: 100%;
    height: 100%;
    background: #f0f;
}

#top, #bottom {
    width: 100%;
    height: 50px;
    background: #333;
    position: absolute;
    top: 0px;
    left: 0px;
}

#bottom {
    bottom: 0px;
}
于 2013-06-11T21:39:53.897 回答