1. 程式人生 > >解決子元素浮動父元素高度為0

解決子元素浮動父元素高度為0

我們在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的屬性,導致子元素脫離了當前的文件流

解決的辦法:

  1. 要是可以的話,把屬性設定為display:inline-block
.div{
            width: 100px;
            height: 100px;
            margin-right: 10px;
            /*float: left;*/
            display: inline-block;
        }

父元素被撐開
這裡要注意,用inline-block後子元素之間會產生間距
也能把body元素撐開
能把body元素撐開
2. 給父元素加一個overflow:hidden的屬性,子元素還是float:left

.box{
        overflow: hidden;
    }

能把body元素撐開

3.給父元素加一個float:left/right,一起脫離文件流

 .box{
    float:left;
}

不能把body元素撐開
不能把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撐開