css-BFC

BFC?

ps:一開始看到這名詞的時候我心里是拒絕的,什么鬼?

概念

(Block formatting context)直譯為格式化上下文,它是一個獨立的渲染區(qū)域。

布局規(guī)則

  1. 內(nèi)部的Box會在垂直方向,一個接一個地放置;
  2. Box垂直方向的距離由margin決定。屬于同一個BFC的兩個相鄰Box的margin會發(fā)生重疊;屬于不同BFC則不會;
  3. 每個元素的margin box的左邊, 與包含塊border box的左邊相接觸(對于從左往右的格式化,否則相反)。即使存在浮動也是如此;
  4. BFC的區(qū)域不會與float box重疊;
  5. BFC就是頁面上的一個隔離的獨立容器,容器里面的子元素不會影響到外面的元素。反之也如此;
  6. 計算BFC的高度時,浮動元素也參與計算;

那些元素會形成BFC

  1. 根元素;
  2. float屬性部位none;
  3. position為absolute和fixed;
  4. display為inline-block, table-cell, table-caption, flex, inline-flex;
  5. overflow不為visible;

有啥子用?

  1. 清除浮動;
<div class="container">
    <div class="item"></div>
  </div>

<style>
  .container {
    border: 5px solid #fcc;
  }

  .item {
    border: 3px solid #f66;
    height: 200px;
    width: 100px;
    float: left;
  }
</style>
浮動.jpg

若是用的float特性的話,很經(jīng)常遇到這種撐不起父級高度的情況,這是可以用根據(jù)BFC的特性來解決它(6. 計算BFC的高度時,浮動元素也參與計算):

.container {
    border: 5px solid #fcc;
    overflow: hidden;
  }
浮動2
  1. margin重疊
  <div class="container">
    <p class="item"></p>
    <p class="item"></p>
  </div>

<style>
  .container {
    border: 5px solid #fcc;
  }
  .item {
    height: 200px;
    width: 100px;
    margin: 20px;
    overflow: hidden;
    background: #fcc;
  }
</style>
20px

設(shè)置div的邊距為20px的則兩個div垂直距離應該為40px;這個時候就發(fā)生了邊距重疊了;(Box垂直方向的距離由margin決定。屬于同一個BFC的兩個相鄰Box的margin會發(fā)生重疊)

讓我們用BFC來解決他:

  <div class="container">
    <p class="item"></p>
    <div class="item-container">
      <p class="item"></p>
    </div>  
  </div>

<style>
  .container {
    border: 5px solid #fcc;
  }

  .item {
    height: 200px;
    width: 100px;
    margin: 20px;
    overflow: hidden;
    background: #fcc;
  }

  .item-container {
    overflow: hidden;
  }
</style>

此時我們用了div來單獨把一個p給獨立出來并且觸發(fā)div的BFC,此時的兩個p元素不在同一個BFC中也就防止了p元素之間的margin重疊;

記住BFC是一個隔離獨立容器和他的特性,容器內(nèi)的子元素不會影響到外面的元素。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 14,093評論 1 92
  • BFC,你也許聽過這個詞,但是你可能不是很有底氣地解釋清楚。寫樣式的時候,往往加了一個樣式或者改了一個屬性,就能達...
    WEB攻程獅閱讀 376評論 0 1
  • 在CSS奇技淫巧之負邊距的應用里提到了某些場景下前一個塊的margin-bottom和文檔流之后的下一個塊的mar...
    小胖子嘿嘿嘿閱讀 542評論 0 3
  • 原理解釋——block formatting context 下列情況將創(chuàng)建一個塊格式化上下文: float的值不...
    栗子酥小小閱讀 1,070評論 0 1
  • 一、BFC是什么? 它是 Block Formatting Context (塊級格式化上下文) 的簡稱,接下來通...
    07120665a058閱讀 3,917評論 15 40

友情鏈接更多精彩內(nèi)容