最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

CSS理解塊級格式上下文(BFC)

  發(fā)布時間:2018-02-22 15:00:08   作者:佚名   我要評論
BFC(Block formatting context)直譯為"塊級格式化上下文"。它規(guī)定了內部的Block-level Box如何布局,并且與這個區(qū)域外部毫不相干.接下來通過本文給大家介紹CSS理解塊級格式上下文(BFC)的相關知識,感興趣的朋友一起看看吧

1.BFC 定義

BFC(Block formatting context)直譯為"塊級格式化上下文"。它是一個獨立的渲染區(qū)域,只有Block-level box(塊級元素)參與, 它規(guī)定了內部的Block-level Box如何布局,并且與這個區(qū)域外部毫不相干.

通俗地來說:創(chuàng)建了 BFC的元素就是一個獨立的盒子,里面的子元素不會在布局上
影響外面的元素(里面怎么布局都不會影響外部),BFC任然屬于文檔中的普通流

2.BFC的生成:

知道了BFC怎么觸發(fā)BFC
滿足以下條件之一都可以觸發(fā)BFC,變身為BFC

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

你會發(fā)現(xiàn)BFC無處不在,只是自己用的時候不知道而已

3.BFC布局規(guī)則:

變身為BFC后有什么特性呢,以下:

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

4.BFC作用:

用起來come boby

1.防止外邊距重疊

bfc導致的屬于同一個bfc中的子元素的margin重疊(Box垂直方向的距離由margin決定。屬于同一個BFC的兩個相鄰Box的margin會發(fā)生重疊)

問題:由圖可以看到,String1和String2 之間只有20px的margin,按理來說應該是40px,但這是在bfc中導致了他們的margin重疊

代碼:

<style>
.container1{
        /* 通過overflow:hidden可以創(chuàng)建bfc */
        overflow: hidden;
        background-color: red;
        width: 300px;
    }
    .sub1{
        margin: 20px 0px;
        background-color: #dea;
    }
</style>
<div class="container1">
        <div class="sub1">String1</div>
        <div class="sub1">String2</div>
</div>

 

解決方法:我們可以在div外面包裹一層容器,并觸發(fā)該容器生成一個BFC。那么兩個div便不屬于同一個BFC,就不會發(fā)生margin重疊了。

代碼:

<style>
    .newbfc{
            overflow: hidden;
    }
</style>
<div class="container1">
        <div class="sub1">String1</div>
        <div class="newbfc"><div class="sub1">String2</div></div>
</div>

2.清除浮動:

問題:當元素的子元素都浮動后,會出現(xiàn)高度坍塌的現(xiàn)象,即父容器的高度不會被撐開

代碼:

<style>
    .pre2{
        width: 200px;
        border: 2px solid red;
    }
    .float1,.float2{
        width: 100px;
        height: 100px;
        float: left;
    }
    .float1{
        background-color: #dee;
    }
    .float2{
        background-color: #dcc;
    }
</style>
<div class="pre2">
        <div class="float1"></div>
        <div class="float2"></div>
</div>

解決方法:

bfc的規(guī)則:計算BFC的高度時,浮動元素也參與計算所以只要將父容器設置為bfc就可以把子元素包含進去:
這個容器將包含浮動的子元素,它的高度將擴展到可以包含它的子元素,在這個BFC,這些元素將會回到頁面的常規(guī)文檔流。

.pre2{
        width: 200px;
        border: 2px solid red;
        /* 設置overflow*/
        overflow:hidden;
    }

3.解決布局:防止文字環(huán)繞

代碼:

<style>
.container2{
        overflow: hidden;
        width: 200px;
    }
    .box{
        float: left;
        width: 100px;
        height: 30px;
        background-color: #daa;
    }
</style>
<div class="container2">
        <div class="box"></div>
        <p style="background-color: #eea">sdfadsfdff fffffffds fsfffff sfd  fsdsdfsdf fffffff</p>
</div>

這個p元素并沒有移動,但是它卻出現(xiàn)在浮動元素的下方。p元素的line boxes(指的是文本行)進行了移位。此處line boxes的水平收縮為浮動元素提供了空間。

bfc的規(guī)則:每個元素的margin box的左邊, 與包含塊border box的左邊相接觸(對于從左往右的格式化,否則相反)。即使存在浮動也是如此。

解決這個問題只要將p元素添加overflow:hidden使其成為一個新的bfc就可以了

 

總結

以上所述是小編給大家介紹的CSS理解塊級格式上下文(BFC)的相關知識,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

相關文章

  • 10分鐘理解CSS BFC原理及其應用

    這篇文章主要介紹了10分鐘理解BFC原理及其應用的相關資料,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-01
  • 淺析CSS里的BFC和IFC的用法

    這篇文章主要介紹了淺析CSS里的BFC和IFC的用法的相關資料,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-30
  • 淺談CSS潛藏著的BFC

    這篇文章主要介紹了淺談CSS潛藏著的BFC的相關資料,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-08
  • css布局之BFC模式(block formatting context)

    這篇文章主要介紹了css布局之BFC模式(block formatting context),通過BFC盒子的一些特性和應用場景解釋了BFC模式,具體操作步驟大家可查看下文的詳細講解,感興趣的小伙
    2017-08-16
  • CSS布局基礎BFC

    這篇文章主要介紹了CSS布局基礎BFC 的相關資料,需要的朋友可以參考下
    2016-07-14
  • CSS使用BFC規(guī)則布局引發(fā)外層div包裹內層div的處理方法

    BFC情況下人們通常在div中使用float和margin,這會經常出現(xiàn)一些問題,這里就來看一下CSS使用BFC規(guī)則布局引發(fā)外層div包裹內層div的處理方法,需要的朋友可以參考下.
    2016-06-03

最新評論

乌什县| 和硕县| 泗水县| 新营市| 邻水| 陵水| 安徽省| 英吉沙县| 靖安县| 扬中市| 车致| 安庆市| 台湾省| 长阳| 库伦旗| 两当县| 太白县| 通榆县| 淳安县| 临朐县| 桑日县| 阜新市| 东安县| 武平县| 九寨沟县| 乐亭县| 大悟县| 穆棱市| 柳州市| 万山特区| 新和县| 城固县| 娄底市| 苏州市| 玉屏| 临邑县| 衢州市| 乌兰县| 鄄城县| 麻栗坡县| 建宁县|