縱觀css盒子(標(biāo)準(zhǔn)or非標(biāo)準(zhǔn))常用的布局中,我大致分為2類,一種是居中,一種是等分。居中包含了水平居中,垂直居中,水平垂直居中;等分又包含了等分塊布局,等分高布局……
等分布局
先看看等分的布局方案
1. float
<div class="parent">
<div class="column">
<p>1</p>
</div>
<div class="column">
<p>2</p>
</div>
<div class="column">
<p>3</p>
</div>
<div class="column">
<p>4</p>
</div>
</div>
<style>
.parent {
margin-left: -20px;
}
.column {
float: left;
width: 25%;
padding-left: 20px;
box-sizing: border-box;
}
</style>
兼容性較好(IE 8以上)
**2. flex **
<div class="parent">
<div class="column">
<p>1</p>
</div>
<div class="column">
<p>2</p>
</div>
<div class="column">
<p>3</p>
</div>
<div class="column">
<p>4</p>
</div>
</div>
<style>
.parent {
display: flex;
}
.column {
flex: 1;
}
.column+.column { /* 相鄰兄弟選擇器 */
margin-left: 20px;
}
</style>
兼容性較差(flex屬于css3)
兼容性:IE8及以上
3. table
<div class='parent-fix'>
<div class="parent">
<div class="column">
<p>1</p>
</div>
<div class="column">
<p>2</p>
</div>
<div class="column">
<p>3</p>
</div>
<div class="column">
<p>4</p>
</div>
</div>
</div>
<style>
.parent-fix {
margin-left: -20px;
}
.parent {
display: table;
width: 100%;
/*可以布局優(yōu)先,也可以單元格寬度平分在沒有設(shè)置的情況下*/
table-layout: fixed;
}
.column {
display: table-cell;
padding-left: 20px;
}
</style>
兼容性:可以兼容 IE 8
等高布局
1. table
<div class="parent">
<div class="left">
<p>left</p>
</div>
<div class="right">
<p>right</p>
<p>right</p>
</div>
</div>
<style>
.parent {
display: table;
width: 100%;
table-layout: fixed;
}
.left {
display: table-cell;
width: 100px;
}
.right {
display: table-cell
/*寬度為剩余寬度*/
}
</style>
利用 table 的特性——每列等寬
2. flex
<div class="parent">
<div class="left">
<p>left</p>
</div>
<div class="right">
<p>right</p>
<p>right</p>
</div>
</div>
<style>
.parent {
display: flex;
}
.left {
width: 100px;
margin-left: 20px;
}
.right {
flex: 1;
}
</style>
3. float
<div class="parent">
<div class="left">
<p>left</p>
</div>
<div class="right">
<p>right</p>
<p>right</p>
</div>
</div>
<style>
.parent {
overflow: hidden;
}
.left,
.right {
padding-bottom: 9999px;
margin-bottom: -9999px;
}
.left {
float: left;
width: 100px;
margin-right: 20px;
}
.right {
overflow: hidden;
}
</style>
偽等高(只有背景顯示高度相等),左右真實(shí)的高度其實(shí)不相等。 兼容性較好。