我正在尝试设计一个带有标题的页面,一个延伸到垂直横向(减去页眉和页脚)的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不是我的事。
对此的任何帮助都会很棒。
由于
答案 0 :(得分:22)
使用CSS3 Flexbox :
/*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>
答案 1 :(得分:2)
使用此方法,您无需定义元素的位置
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;
}
答案 2 :(得分:-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;
}