1. 程式人生 > 其它 >CSS中清除浮動的作用講解與演示

CSS中清除浮動的作用講解與演示

技術標籤:前端學習版塊清除浮動浮動的影響CSSfloat與clear

目錄

1、浮動的作用

浮動在佈局方面會起到很大作用,塊級元素都是獨佔一行,要想讓多個塊級元素同一行展示,就需要浮動

2、浮動之後的影響

如果一個div1中的子div進行了浮動,而子div的高度不是事先確定好的,而是通過js動態提供的,這也就意味著,子div在頁面載入之前是沒有高度的,那麼div1作為父元素,必然也不能直接寫死一個高度(當父子元素高度不一致時,佈局上會出現不理想的效果)

參考程式碼如下(未清除浮動):

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>浮動與清除浮動學習</title>
    <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"
>
</script> <style> #div1 { border:2px solid orange; background-color: red; } #son1 { float: left; margin-left:20px; background-color: grey; width: 20%; } #son2 { float
: right; margin-right:20px; background-color: green; width: 30%; }
</style> <script> $(function(){ var height = prompt("請輸入子元素的高度") $("#son1").height(height) $("#son2").height(height-20) }) </script> </head> <body> <div id="div1"> <div id="son1">div1子元素1</div> <div id="son2">div1子元素2</div> </div> <div style="border: 2px solid blue;"> 我是div1的兄弟元素div2 </div> </body> </html>

假設子元素浮動後,不清除浮動,當輸入子元素的高度為50後,看到的效果如下:
在這裡插入圖片描述

從上圖可以看出,div1的高度為0,只出現了一個div1的邊框,你可能會說,div1沒有設定高度,肯定沒有高度呀,但是div1有子div元素,子的div的高度理論上是會撐起來父元素的高度。

然而結果卻沒有,這是因為div1的子元素設定了浮動,浮動之後該元素脫離了文件流,它的高度與div1是沒有關係的,那麼此時div2作為兄弟元素,出現的位置在div1的下方其實就可以理解了,但是這種效果並不是我們希望看到的。

總結一下浮動帶來的影響:

當某元素的高度不能直接寫死,且其子元素設定了浮動,此時因為子元素脫離了文件流,它的高度是不能直接將父元素撐起來的,就會導致父元素在文件流中沒有高度,然後被其兄弟元素佔據位置,從而導致佈局混亂的結果

3、解決浮動影響:清除浮動

基於上述浮動後的影響,要解決的問題就是:
子元素浮動後,子元素的高度要撐滿其父元素,這樣才可以使得父元素在文件流中的高度與其子元素是一樣的,也就解決了出現佈局錯亂的情況

怎樣讓一個浮動元素的高度能撐起其父元素呢?
答案就是:新增清除浮動的程式碼

先看清除浮動後的效果:

在這裡插入圖片描述

從上圖可以看出,div1的高度被子元素撐起來了,浮動帶來的影響在清除浮動後已經消失了

清除浮動後的完整程式碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>浮動與清除浮動學習</title>
    <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script>
    <style>
        #div1 {
            border:2px solid orange;
            background-color: red;
        }
        #son1 {
            float: left;
            margin-left:20px;
            background-color: grey;
            width: 20%;
        }
        #son2 {
            float: right;
            margin-right:20px;
            background-color: green;
            width: 30%;
        }
        /*清除浮動程式碼*/
        .clearfloat1 {
            clear: both
        }
    </style>
    <script>
        $(function(){
            var height = prompt("請輸入子元素的高度")
            $("#son1").height(height)
            $("#son2").height(height-20)
        })
    </script>
</head>
<body>
    <div id="div1" class="div1 clearfloat2">
        <div id="son1">div1子元素1</div>
        <div id="son2">div1子元素2</div>
        <div class="clearfloat1"></div>
    </div>
    <div style="border: 2px solid blue;">
        我是div1的兄弟元素div2
    </div>
</body>

</html>

4、關於清除浮動的多種方式介紹