1. 程式人生 > >CSS 浮動為什麼會塌陷以及解決方案

CSS 浮動為什麼會塌陷以及解決方案

CSS 浮動為什麼會塌陷

浮動

浮動的框可以向左或向右移動,直到它的外邊緣碰到包含框或另一個浮動框的邊框為止。
浮動脫離文件流,所以文件的普通流中的塊框表現得就像浮動框不存在一樣。

浮動塌陷

當元素設定浮動而父元素的寬高沒有設定時,高度會塌縮為0。如圖
浮動塌陷

解決方案

1 在父元素裡面填加一個沒寬度高度的元素使用clear:both

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style type="text/css">
        #div1
{ border :1px solid #595959; } #div2{ width: 200px; height: 200px; background-color: #172FC0; float: left; } .clear:after{/*清除浮動*/ content: ''; display:block; clear: both; }
</style> </head> <body> <div id="div1" class="clear"> <div id="div2" > </div> </div> </body> </html>

浮動塌陷

按照我的理解在外部div的後面加上了一個沒有高度和寬度的元素,並且使用了clear清除了左右的浮動使得兩邊沒有浮動物件讓整個內容被撐開。

2 使用overflow:hidden

<!DOCTYPE html>
<html> <head> <title></title> <style type="text/css"> #div1{ border :1px solid #595959; overflow: hidden;/*清除浮動*/ } #div2{ width: 200px; height: 800px; background-color: #172FC0; float: left; } .clear:after{ content: ''; display:block; clear: both; } </style> </head> <body> <div id="div1" > <div id="div2" > </div> </div> </body> </html>

overflow:hidden觸發了外層的BFC佈局,使得內層的高度被計算。

3 給父元素新增高度