CSS 浮動為什麼會塌陷以及解決方案
阿新 • • 發佈:2019-01-07
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佈局,使得內層的高度被計算。