各种html圣杯布局
今天对比下各种方案的圣杯布局。(不考虑低端浏览器) css代码上未做编辑,随意。
table
table布局,金玉其外败絮其中。
<style>
table{
width:600px;
height:300px;
text-align:center;
color:#fff;
}
thead td,tfoot td{
background:#9e9e9e
}
tbody td:first-child{
background:#00bcd4
}
tbody td:last-child{
background:#ff5722
}
tbody td:nth-child(2){
background:#8bc34a
}
</style>
<table border=1>
<thead>
<td colspan=3>header</td>
</thead>
<tbody>
<tr>
<td>left</td>
<td>center</td>
<td>right</td>
</tr>
</tbody>
<tfoot>
<td colspan=3>footer</td>
</tfoot>
</table>
| header | ||
| left | center | right | footer |
div+float布局
目前最常用的方案,需要设置高度宽度,其他没什么。
<div class="layout">
<div class="float">
<div class="header">header</div>
<div class="container">
<div>left</div>
<div>center</div>
<div>right</div>
</div>
<div class="footer">
footer
</div>
</div>
</div>
<style>
.layout{
width:600px;
height:300px;
}
.float{
width:100%;
height:100%;
color:#fff;
text-align:center;
}
.header,.footer{
background:#9e9e9e;
height:30px;
}
.container{
height:calc(100% - 60px);
clear:both;
}
.container>div{
float:left;
height:100%;
}
.container>div:first-child{
background:#00bcd4;
width:20%;
}
.container>div:nth-child(2){
background:#8bc34a;
width:60%;
}
.container>div:last-child{
background:#ff5722;
width:20%;
}
</style>
header
left
center
right
div+position
定位影响布局,其他需要进行定位操作,复杂度也很高,这个具体不错演示,自行体会。
flexbox布局
新时代的标准,真是稳准狠
<div class="layout">
<div class="flex">
<div class='f-header' >header</div>
<div class='f-container' >
<div>left</div>
<div>center</div>
<div>right</div>
</div>
<div class='f-footer' >footer</div>
</div>
</div>
<style>
.layout{
width:600px;
height:300px;
}
.flex{
width:100%;
height:100%;
color:#fff;
text-align:center;
display:flex;
flex-direction:column;
}
.header,.footer{
background:#9e9e9e;
}
.container{
flex:1;
display:flex;
}
.container>div:first-child{
background:#00bcd4;
flex:1
}
.container>div:nth-child(2){
background:#8bc34a;
flex:2
}
.container>div:last-child{
background:#ff5722;
flex:1;
}
</style>
header
left
center
right
grid布局
即将发布的网格布局,灵活随意,css多费点内容。
<div class="layout">
<div class="grid">
<div class='header' >header</div>
<div class='container' >
<div>left</div>
<div>center</div>
<div>right</div>
</div>
<div class='footer' >footer</div>
</div>
</div>
<style>
.layout{
width:600px;
height:300px;
}
.grid{
width:100%;
height:100%;
color:#fff;
text-align:center;
display:grid;
grid-template-areas:'header'
'container '
'footer';
grid-template-rows:auto 1fr auto;
}
.header,.footer{
background:#9e9e9e;
}
.header{
grid-area:header
}
.footer{
grid-area:footer
}
.container{
grid-area:container;
display:grid;
grid-template-areas:'left center right'
}
.container>div:first-child{
background:#00bcd4;
grid-area:left
}
.container>div:nth-child(2){
background:#8bc34a;
grid-area:center
}
.container>div:last-child{
background:#ff5722;
grid-area:right;
}
</style>
header
left
center
right