搜尋
首頁web前端css教學浮動的定義與浮動的清除(BFC)

浮動

1. 什麼是浮動

當元素的<a href="http://www.php.cn/wiki/919.html" target="_blank">float</a> 屬性不為none 時就產生了浮動。

<p class="float">float</p>
.float {
  float: left;
  width: 100px;
  height: 100px;
  background-color: #ddd;
}

2. 浮動的影響

  1. 浮動會使元素脫離文件流,具體表現為:

  • 父元素高度塌陷,即不會包含浮動元素。
    例如上面的程式碼就會表現為

    浮動的定義與浮動的清除(BFC)

    父元素高度塌陷

  • 文字環繞。

    浮動的定義與浮動的清除(BFC)

    文字環繞效果


    #可以注意到這裡.normal元素的寬度覆蓋了.float元素,但是.float元素下是沒有文字的,也就是說文字被「擠」出來了,這是因為它雖然會脫離文檔流,但是不會脫離文字流。這個效果也是float屬性的本意。其程式碼如下:

    
      <p class="float">float</p>
      

    正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素

    body {
      background-color: #ccc;
    }
    .float {
      float: left;
      width: 100px;
      height: 100px;
      background-color: #ddd;
    }
    .normal {
      background-color: #fff;
    }
  • 浮動元素的外邊距不會合併。
    關於外邊距合併的相關內容可以戳這裡。

  • 元素一旦浮動便會變成行內塊元素,即 <a href="http://www.php.cn/wiki/927.html" target="_blank">display</a>: inline-block

  • 3. 浮動的應用

    • 上面提到的文字環繞。

    • 寫一個三列佈局,左右固定寬度,中間自適應。

      <body>
        <p class="left float">left</p>
        <p class="right float">right</p>
        <p class="mid">自适应宽度元素自适应宽度元素自适应宽度元素自适应宽度元素自适应宽度元素自适应宽度元素自适应宽度元素自适应宽度元素自适应宽度元素</p>
      </body>
      body {
        background-color: #ccc;
      }
      .float {
        float: left;
        width: 100px;
        height: 100px;
        background-color: #ddd;
      }
      .left {
        float: left;
      }
      .right {
        float: right;
      }
      .mid {
        height: 100px;
        background-color: #fff;
        margin: 200px; /*故意加上了上下 margin 值*/
      }

      這裡我故意加上了上了margin 值,可以看到效果:

      浮動的定義與浮動的清除(BFC)

      三列佈局

      body 也跟著.midmargin 往下掉了,這點可以用前面介紹的外邊距合併來解釋。

      ps:我第一次自己寫這個三列佈局的時候,html 是這樣寫的

      <body>
        <p class="left float">left</p>
        <p class="mid">自适应宽度元素自适应宽度元素自适应宽度元素自适应宽度元素自适应宽度元素自适应宽度元素自适应宽度元素自适应宽度元素自适应宽度元素</p>
        <p class="right float">right</p>
      </body>

      如上把中間自適應的元素寫在中間,其實這樣比較符合邏輯,但如果這樣寫是行不通的,右邊的元素會掉下來,因為.mid 元素是區塊級元素,會佔滿整行,.left 不會掉下來是因為它本來就是脫離文文檔流的浮動元素。

    清除浮動

    在子元素上清除

    #這裡我只寫不會產生無意義標籤的方法。

    • 浮動元素後面若有兄弟元素,則可以在給它的兄弟元素加上clear屬性。
      如文字環繞那部分程式碼,給 .normal 加上 clear:leftclear:bothclear 的具體用法這裡不做過多贅述。

    • 為要清除浮動的元素加上偽類別或偽元素。

      .float::after {
        content: &#39;&#39;;
        display: block;
        visiability: hidden;
        height: 0;
        clear: both;
      }

      關於 ::after 的使用可以看 MDN 的文檔。

    在父元素上清除,即BFC

    BFC(Block Formatting Context),即區塊級格式上下文,它的官方解釋是:

    浮動、絕對定位元素(positionabsolutefixed)、行內區塊元素display:inline-block、表格儲存格display:table-cell、表格標題display:table-caption 以及overflow 屬性值不為visible 的元素(除了該值被傳播到視點viewport 的情況)將會建立一個新的區塊級格式化上下文。

    總結來說它要滿足下列條件之一:

    1. float 不為none

    2. #position 不為staticrelative

    3. display table-celltable-captioninline-blockflexinline-flex

    4. overflow 不為visible

    只要給父元素加上以上任一屬性滿足條件,也就是給父元素加上BFC 就能清除子元素的浮動。

    【相關推薦】

    1. 免費css線上影片教學

    2. css線上手冊

    #3. php.cn獨孤九賤(2)-css影片教學

    #

    以上是浮動的定義與浮動的清除(BFC)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    陳述
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
    每周平台新聞:Galaxy Store的Web應用程序,Tappable Stories,CSS Subgrid每周平台新聞:Galaxy Store的Web應用程序,Tappable Stories,CSS SubgridApr 14, 2025 am 11:20 AM

    在本週的綜述中:Firefox獲得了類似鎖匠的力量,三星的Galaxy Store開始支持Progressive Web Apps,CSS Subgrid正在Firefox發貨

    每周平台新聞:Internet Explorer模式,搜索控制台中的速度報告,限制通知提示每周平台新聞:Internet Explorer模式,搜索控制台中的速度報告,限制通知提示Apr 14, 2025 am 11:15 AM

    在本週的綜述中:Internet Explorer進入Edge,Google搜索控制台吹捧新的速度報告,而Firefox給出了Facebook&#039; s Notification

    CSS自定義屬性的範圍的功率(和樂趣)CSS自定義屬性的範圍的功率(和樂趣)Apr 14, 2025 am 11:11 AM

    您可能至少已經對CSS變量有點熟悉了。如果沒有,這是兩秒鐘的概述:它們真的稱為自定義屬性

    我們是程序員我們是程序員Apr 14, 2025 am 11:04 AM

    構建網站正在編程。編寫HTML和CSS正在編程。我是程序員,如果您在這裡閱讀CSS-Tricks,那麼您很有可能是您

    您如何從網站上刪除未使用的CSS?您如何從網站上刪除未使用的CSS?Apr 14, 2025 am 10:59 AM

    在這裡,我想預先知道的是:這是一個很難的問題。如果您降落在這裡,因為您希望指向您可以運行的工具

    圖片中的圖片網絡API簡介圖片中的圖片網絡API簡介Apr 14, 2025 am 10:57 AM

    圖片中的圖片在2016年發行了Macos Sierra,在Safari瀏覽器中首次出現在網絡上。這使用戶可以彈出

    使用Gatsby組織和準備圖像以使圖像模糊效果的方法使用Gatsby組織和準備圖像以使圖像模糊效果的方法Apr 14, 2025 am 10:56 AM

    蓋茨比(Gatsby)進行了出色的處理和處理圖像。例如,它可以幫助您節省圖像優化的時間,因為您不必手動

    哦,嘿,填充百分比基於父元素的寬度哦,嘿,填充百分比基於父元素的寬度Apr 14, 2025 am 10:55 AM

    今天,我學到了一些有關基於百分比的(%)填充的知識,我腦海中完全錯了!我一直認為百分比填充是基於

    See all articles

    熱AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智慧驅動的應用程序,用於創建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用於從照片中去除衣服的線上人工智慧工具。

    Undress AI Tool

    Undress AI Tool

    免費脫衣圖片

    Clothoff.io

    Clothoff.io

    AI脫衣器

    AI Hentai Generator

    AI Hentai Generator

    免費產生 AI 無盡。

    熱門文章

    R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
    3 週前By尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.最佳圖形設置
    3 週前By尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.如果您聽不到任何人,如何修復音頻
    4 週前By尊渡假赌尊渡假赌尊渡假赌
    WWE 2K25:如何解鎖Myrise中的所有內容
    1 個月前By尊渡假赌尊渡假赌尊渡假赌

    熱工具

    SecLists

    SecLists

    SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

    ZendStudio 13.5.1 Mac

    ZendStudio 13.5.1 Mac

    強大的PHP整合開發環境

    Atom編輯器mac版下載

    Atom編輯器mac版下載

    最受歡迎的的開源編輯器

    PhpStorm Mac 版本

    PhpStorm Mac 版本

    最新(2018.2.1 )專業的PHP整合開發工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神級程式碼編輯軟體(SublimeText3)