解決子元素浮動父元素高度為0
阿新 • • 發佈:2019-02-08
我們在CSS中使用float的時候常常會發現父元素的高度為0,如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>子元素全浮動父元素高度為0</title>
<style type="text/css">
.box{
/*border:1px solid #ccc;*/
/*overflow: hidden;*/
/*float:left;*/
}
.div{
width: 100px;
height: 100px;
margin-right: 10px;
float: left;
}
.div1{
background-color: #96f;
}
.div2{
background-color: #096;
}
.div3{
background-color : purple;
}
</style>
</head>
<body>
<div class="box">
<div class="div div1"></div>
<div class="div div2"></div>
<div class="div div3"></div>
<!-- <div style="clear:both"></div> -->
</div>
</body>
</html>
圖
可以看到在class為box的div下有三個div,但是父元素沒有被撐開,原因為:
我們在給每個子元素div加了float的屬性,導致子元素脫離了當前的文件流
解決的辦法:
- 要是可以的話,把屬性設定為
display:inline-block
.div{
width: 100px;
height: 100px;
margin-right: 10px;
/*float: left;*/
display: inline-block;
}
這裡要注意,用inline-block後子元素之間會產生間距
也能把body元素撐開
2. 給父元素加一個overflow:hidden的屬性,子元素還是float:left
.box{
overflow: hidden;
}
能把body元素撐開
3.給父元素加一個float:left/right,一起脫離文件流
.box{
float:left;
}
不能把body元素撐開
4.在最後加一個div設定屬性clear:both
<div class="box">
<div class="div div1"></div>
<div class="div div2"></div>
<div class="div div3"></div>
<div style="clear:both"></div>
</div>
能把body撐開