天天看點

css中的高度塌陷以及開啟BFC

初始代碼:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title></title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- <script src="https://cdn.bootcss.com/vue/2.6.6/vue.min.js"></script> -->
    <style>
        .box1{
            background-color: pink;
            width: 300px;

           
        }
        .box2{
            height: 300px;
            width: 300px;
            background-color: red;
        }
        .b1{
            background-color: purple;
            width: 100px;
            height: 100px;
            float: left;
        }
        .b2{
            background-color: green;
            width: 100px;
            height: 100px;
            float: left;
        }
    </style>
   

</head>
<body>

    <div class="box1">
        <div class="b1"></div>
        <div class="b2"></div>
        <div class="clearfix"></div>
    </div>
    <div class="box2"></div>
    

</body>
</html>
           

未浮動

css中的高度塌陷以及開啟BFC

b1與b2浮動之後,父元素高度為0,塌陷了

css中的高度塌陷以及開啟BFC

一、開啟父元素的同方向浮動;那麼父元素和子元素一起脫離了文檔流,

父元素下面的同級元素依舊會上移,但是父元素也算是有了高度!這個高度和子集元素高度一緻!

.box1{
            background-color: pink;
            width: 300px;
              /* 開啟BFC的方法 */
            float: left;   
        }
           
css中的高度塌陷以及開啟BFC

二、設定父級元素為絕對定位或者固定定位,和設定浮動的效果一樣。

.box1{
            background-color: pink;
            width: 300px;
              /* 開啟BFC的方法 */
            position: absolute;   
        }
           
css中的高度塌陷以及開啟BFC

三、設定父級元素的display為inline-block,也就是将父級元素變成了行内塊級元素

父元素下面的同級元素會在原本文檔流中的位置下些許下移

父級元素的高度被子級元素撐開了!

.box1{
            background-color: pink;
            width: 300px;
              /* 開啟BFC的方法 */
              display: inline-block;
        }
           
css中的高度塌陷以及開啟BFC

四、設定父級元素的overflow非預設屬性:

父級元素會被子元素撐開,高度就是子元素的高度;

父元素下面的同級元素不會上移。

.box1{
            background-color: pink;
            width: 300px;
              /* 開啟BFC的方法 */
              overflow: hidden;
        }
           
css中的高度塌陷以及開啟BFC

五(未開啟BFC,但是解決了高度塌陷問題!)、設定父元素的高度,這種方法照成的結果和開啟overflow的結果一緻;但是本質應該是不相同的

.box1{
            background-color: pink;
            width: 300px;
            height: 200px;
        }
           
css中的高度塌陷以及開啟BFC

六、給塌陷的父級元素的最後添加一個元素,使該元素清除浮動,呈現塊級樣式。也可解決高度塌陷問題!

.box1{
            background-color: pink;
            width: 300px;
        }
        .box1:after{
            content:'';
            display: table;
            clear: both;
        }
           
css中的高度塌陷以及開啟BFC