css12.高度塌陷問題

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8"/>
        <style type="text/css">
            .box1{
                /* 爲box1指定邊框 */
                border: 10px red solid;
                /* 
                    開啓BFC以後,有以下特性
                        1.父元素的垂直外邊距不會和子元素重疊
                        2.開啓BFC的元素不會被浮動元素覆蓋
                        3.開啓BFC的元素可以包含浮動的子元素
                    開啓方法:
                        1.設置元素浮動   //float: left;
                            -使用此方法開啓,會撐開父元素,但是會導致父元素寬度丟失
                                而且使用這種方法會導致下邊元素上移
                        2.設置元素絕對位置   
                        3.設置元素爲inline-block        //display:inline-block;
                            -使用此方法開啓,會撐開父元素,但是會導致父元素寬度丟失
                        4.將元素的overflow設置爲一個非visible

                        推薦方式:將overflow設置爲hidden(auto)是副作用最小的方式
                */
                /* 解決高度塌陷的方法 */
                overflow: hidden;

                /* IE6一下 */
                /* zoom:1; */
            }

            .box2{
                width: 100px;
                height: 100px;
                background-color: pink;
                /* 
                    在文檔流中,父元素高度默認被子元素撐開
                    也就是子元素多高,父元素多高
                    但是當子元素設置浮動之後,子元素會完全脫離文檔流,導致父元素高度塌陷
                    由於父元素高度塌陷,父元素下面元素上移,造成頁面混亂
                */
                float: left;
            }
            .box3{
                height: 100px;
                background-color: rosybrown;
}
        
        </style>


    </head>
        
    <body>
        <div class="box1">
            <div class="box2"></div>
        </div>

        <div class="box3"></div>
    </body>


</html>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8"/>
        <style type="text/css">
            .box1{
                width: 100px;
                height: 100px;
                background-color: teal;
                float: left;
            }
            .box2{
                width: 200px;
                height: 200px;
                background-color: skyblue;
                /* 
                    我們希望清掉box1浮動造成的影響,我們用clear來清除浮動
                    clear可以用來清除其他浮動元素對當前元素的影響
                    可選值:
                        none:無操作
                        left:清除左側浮動元素對當前元素影響
                        right:清除右側浮動元素對當前元素影響
                        both:清除兩側浮動元素對當前元素影響
                                其實是清除對他影響最大元素
                    清除浮動,box2位置不變

                */
                float: right;
            }
            .box3{
                width: 300px;
                height: 300px;
                background-color: aqua;
                clear: both;
            }
            /* 
                解決高度塌陷方案二
                    可以直接在高度塌陷父元素最後,添加一個空白div
                    由於這個div沒有浮動,所以它可以撐開父元素的高度
                    然後對他清除浮動,通過這個空白div清除浮動
             */
             /* https://www.bilibili.com/video/av21557880?p=64 */

             /* .box1:after{
                 content: "hello";
             } */
        </style>


    </head>
        
    <body>
        <div class="box1"></div>
        <div class="box2"></div>
        <div class="box3"></div>
    </body>


</html>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章