天天看點

[CSS]CSS浮動float詳解(二):使用floatfloat屬性

閱讀前請看 [CSS]CSS浮動float詳解(一):标準文檔流

通過上一篇的學習中我們發現:所有元素都處于标準流之中,元素之底部始終對齊,頂部則高矮不一,實在是不怎麼美觀。

在一段文字中插入一個圖檔,就會出現如下效果:

[CSS]CSS浮動float詳解(二):使用floatfloat屬性

如果圖檔多了會這樣:

[CSS]CSS浮動float詳解(二):使用floatfloat屬性

是以傲嬌的工程師們發現這樣的顯示實在是太蛋t了,如果這樣就好了:

[CSS]CSS浮動float詳解(二):使用floatfloat屬性

這就是大名鼎鼎的文字環繞效果。

工程師們又發現,實作文字環繞效果必須脫離标準文檔流,因為隻要處于标準文檔流中,文字和圖檔的底部就必然處于同一個水準線上。那麼問題來了,什麼叫做脫離标準文檔流呢?其實所謂的脫離文檔流是相對于文檔流而言的,不處于文檔流之中即不遵循标準文檔流的規則的,都屬于脫離文檔流。

float屬性

為了脫離文檔流,就有了float屬性。這個屬性的名字就很有意思,float是漂浮的意思,漂浮在标準文檔流之上,不受标準文檔流的控制。并且形象的說明了這個屬性的帶來的效果。

脫離文檔流的表現一:脫離文檔流後元素漂浮在文檔流之上

float屬性開啟一個新的流位于漂浮在文檔流之上,進而達到脫離文檔流的效果。如圖:

<style type="text/css">
    *{
        margin: ;
        padding: ;
    }
        .div1{
            float: left;    
            width: px;
            height: px;
            background-color: skyblue;
        }
        .div2{
            width: px;
            height: px;
            background-color: yellow;
        }

    </style>    

<body>
    <div class="div1"></div>
    <div class="div2"></div>
</body>
           
[CSS]CSS浮動float詳解(二):使用floatfloat屬性

脫離文檔流表現二:行内元素可以設定寬高,塊級元素不再占用一行

元素脫離文檔流後,元素永遠都不會被文檔流中的規則限制。文檔流規定,行内元素無法設定寬和高,塊級元素占用一行。脫離後,這個規則不再限制元素,代表着元素無論是塊級元素還是行内元素,都可以設定寬和高,都可以不占用一行。

[CSS]CSS浮動float詳解(二):使用floatfloat屬性

脫離文檔流表現三:文本内容不會被覆寫

文本内容不會被覆寫!!!文本内容不會被覆寫!!!文本内容不會被覆寫!!!

讓我們看一下文字環繞效果的代碼:

div{
            float: left;
            background-color: yellow;
            width: 200px;
            height: 200px;
        }
        p{
            background-color: red;
        }

<body>
    <div>

    </div>
    <p>文字</p>
</body>
           

我們将div浮動,p标簽是塊級标簽,不浮動。按照我們的猜想,div會覆寫p标簽的一部分,但是奇異的事情發生了:

[CSS]CSS浮動float詳解(二):使用floatfloat屬性

我們發現,浮動的元素雖然處于文檔流的上方,但是并不會遮擋文本(文字圖檔連結),文本會自動浮動,形成字圍效果。

脫離文檔流表現四:子元素不會再撐出父容器的高

因為父容器元素的高度預設為包裹子元素,當子元素浮動後,脫離文檔流,子元素不再遵循文檔流中的規則,也就不遵循塊級元素行内元素的規則——是以子元素就不會再撐出父元素的高度。這樣,父元素的高度就變為了0。如圖(紅色邊框是父容器):

[CSS]CSS浮動float詳解(二):使用floatfloat屬性

脫離文檔流表現五:脫離文檔流的元素,仍然是在父元素中浮動

[CSS]CSS浮動float詳解(二):使用floatfloat屬性

綠色盒子并沒有完全浮動到頂部,而是浮動到父元素的頂部。是以,浮動的元素的位置仍然會收到父元素的限制,即隻會在父元素的進行浮動。

float後産生的效果:

再來看一下文字環繞效果,這次我給圖檔加上了邊框:

[CSS]CSS浮動float詳解(二):使用floatfloat屬性

我們看到文字自動的向左浮動,貼在了圖檔的右側。而且,第二行文字發現下發會有空隙繼續漂浮在圖檔右側,無論下方空隙夠不夠文字的高度。最後一行發現,左側沒有依靠,就自動漂浮到了最左側,而且,他的上方有空隙,但是他并不會向上浮動填補空隙。

讓我們用大圖感受一下:

第二行文字發現下發會有空隙繼續漂浮在圖檔右側,無論下方空隙夠不夠文字的高度:

[CSS]CSS浮動float詳解(二):使用floatfloat屬性

最後一行發現,左側沒有依靠,就自動漂浮到了最左側,而且,他的上方有空隙,但是他并不會向上浮動填補空隙

[CSS]CSS浮動float詳解(二):使用floatfloat屬性

盒子也同樣遵循這個效果。