清除浮動的4種方式
假如一段HTMLcode是這樣
<div class="wrap">
我是父元素
<div class="r">我是右浮動</div>
<div class="l">我是左浮動</div>
</div>
CSS是這樣
.wrap{
width: 600px;
background-color: #ccc;
color:#fff;
font-size: 20px;
padding: 10px;
}
.l{
float:left;
background-color: darkgreen;
width: 200px;
height: 100px;
}
.r{
float:right;
background-color: darkred;
height: 100px;
width: 200px;
}
網頁看起來會長這樣
父元素無法正常把高度展開填滿,是因為兩個子元素都有設浮動,有沒有辦法解決這種方式呢?
1.父元素設置高度
把CSS,父元素的部分增加高度
.wrap{
width: 600px;
height:100px;
background-color: #ccc;
color:#fff;
font-size: 20px;
padding: 10px;
}
但這樣寫是錯誤的!
父元素應該正常依照子元素高度而撐開,所以父元素設置高度非常不推薦!
2.父元素內的最底部,新增一個空元素並設置輕浮動
把HTML改成
<div class="wrap">
我是父元素
<div class="r">我是右浮動</div>
<div class="l">我是左浮動</div>
<div class="clearfix"></div>
</div>
然後CSS新增一段
.clear{
clear:both;
}
這樣就完成清除浮動囉
這時網頁會變成
這樣就正常囉!!
但是這種方式有點過時了,並不是主流的清除浮動方式
3.父元素CSS設置overflow:hidden;
在父元素wrap的css設置overflow:hidden;
.wrap{
width: 600px;
background-color: #ccc;
overflow:hidden;
color:#fff;
font-size: 20px;
padding: 10px;
}
這樣網頁也會變成這樣
4.用偽元素清除浮動
替父元素設置css偽元素清除浮動
.wrap:after{
content: "";
display: block;
height: 0;
clear: both;
}
4是最主流的方式!!