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

css布局之BFC模式(block formatting context)

  發(fā)布時(shí)間:2017-08-16 16:21:52   作者:前端大碗茶兒   我要評(píng)論
這篇文章主要介紹了css布局之BFC模式(block formatting context),通過(guò)BFC盒子的一些特性和應(yīng)用場(chǎng)景解釋了BFC模式,具體操作步驟大家可查看下文的詳細(xì)講解,感興趣的小伙伴們可以參考一下。

詳解BFC【 block formatting context】

BFC這個(gè)東西說(shuō)常見(jiàn)的話你可能不覺(jué)得,但是你肯定會(huì)常用到,也許你在用的時(shí)候也沒(méi)想到BFC這東西。那它究竟是什么呢,我們來(lái)一起看一下。

官方給出的BFC解釋是這樣的,浮動(dòng)元素和絕對(duì)定位元素,非塊級(jí)盒子的塊級(jí)容器(例如 inline-blocks, table-cells, 和 table-captions),以及overflow值不為“visiable”的塊級(jí)盒子,都會(huì)為他們的內(nèi)容創(chuàng)建新的塊級(jí)格式化上下文。

在一個(gè)塊級(jí)格式化上下文里,盒子從包含塊的頂端開(kāi)始垂直地一個(gè)接一個(gè)地排列,兩個(gè)盒子之間的垂直的間隙是由他們的margin 值所決定的。兩個(gè)相鄰的塊級(jí)盒子的垂直外邊距會(huì)發(fā)生疊加。

在塊級(jí)格式化上下文中,每一個(gè)盒子的左外邊緣(margin-left)會(huì)觸碰到容器的左邊緣(border-left)(對(duì)于從右到左的格式來(lái)說(shuō),則觸碰到右邊緣),即使存在浮動(dòng)也是如此,除非這個(gè)盒子創(chuàng)建一個(gè)新的塊級(jí)格式化上下文。

上面反復(fù)提到了“ block formatting context”,顯而易見(jiàn)BFC就是他們的縮寫(xiě),官方還有”inline formatting context“,那也就是說(shuō)”formatting context“我們需要仔細(xì)的看一下是什么意思,那我們就拆分來(lái)看看:

formatting:n,格式化的意思,v,使格式化( format的現(xiàn)在分詞 ); 規(guī)定…的格式(或形狀、大小、比例等);
context:語(yǔ)境; 上下文; 背景; 環(huán)境;

放到一起的意思就是“格式化上下文”,它是頁(yè)面中的一塊渲染區(qū)域,并且有一套渲染規(guī)則,它決定了其子元素將如何定位,以及和其他元素的關(guān)系和相互作用。

最常見(jiàn)的Formatting context有Block fomatting context(簡(jiǎn)稱BFC)和Inline formatting context(簡(jiǎn)稱IFC)。CSS2.1 中只有BFC和IFC, CSS3中還增加了GFC和FFC.

Box也是比較重要的一個(gè)概念,Box是CSS布局的對(duì)象和基本單位, 直觀點(diǎn)來(lái)說(shuō),就是一個(gè)頁(yè)面是由很多個(gè)Box(即boxes)組成的。元素的類型和display屬性,決定了這個(gè)Box的類型。 不同類型的Box, 會(huì)參與不同的Formatting context(一個(gè)決定如何渲染文檔的容器),因此Box內(nèi)的元素會(huì)以不同的方式渲染。

例如display屬性值為block, list-item, table的元素,會(huì)生成block-level box。并且參與block fomatting context。 inline-level box: display屬性為inline, inline-block, inline-table的元素,會(huì)生成inline-level box。并且參與inline formatting context。

那么我們通俗的理解一下,BFC就是“塊級(jí)格式化上下文”的意思,創(chuàng)建了 BFC的元素就是一個(gè)獨(dú)立的盒子,不過(guò)只有Block-level box可以參與創(chuàng)建BFC, 它規(guī)定了內(nèi)部的Block-level Box如何布局,并且與這個(gè)獨(dú)立盒子里的布局不受外部影響,當(dāng)然它也不會(huì)影響到外面的元素。

那么我們來(lái)一起看一下BFC盒子的一些特性:

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

在哪些場(chǎng)景可以用到BFC

1.解決margin疊加問(wèn)題

當(dāng)盒子上下排布,上方盒子margin-bottom:50px;下面的盒子margin-top:50;那么神奇的事情就發(fā)生了,兩個(gè)盒子按照疊加來(lái)算的話,距離應(yīng)該是100px,但是我們發(fā)現(xiàn)實(shí)際上兩個(gè)margin值進(jìn)行了疊加,只剩下50px,那么這個(gè)時(shí)候我們就可以觸發(fā)BFC模式,給其中一個(gè)盒子添加一個(gè)父級(jí)元素;

2.用于布局
 

元素的左外邊距會(huì)觸碰到包含塊容器的做外邊框,就算存在浮動(dòng)也會(huì)如此,那么我們可以利用這種方式來(lái)一個(gè)兩列布局,第一個(gè)盒子浮動(dòng),第二個(gè)盒子margin-left賦值;

3.用于清除浮動(dòng),計(jì)算BFC高度

我們發(fā)現(xiàn)由于里面兩個(gè)子元素浮動(dòng)的關(guān)系,兩個(gè)box已經(jīng)脫離了父元素的包含塊,父元素高度已經(jīng)塌陷,我們需要讓父元素包含兩個(gè)box子元素,這樣計(jì)算高度時(shí),兩個(gè)浮動(dòng)子元素就會(huì)參與,所以我們要閉合浮動(dòng),觸發(fā)父元素的BFC,例如overflow:hidden;

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助~如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持!

相關(guān)文章

  • 10分鐘理解CSS BFC原理及其應(yīng)用

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

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

    這篇文章主要介紹了淺談CSS潛藏著的BFC的相關(guān)資料,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-08
  • CSS布局基礎(chǔ)BFC

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

    BFC情況下人們通常在div中使用float和margin,這會(huì)經(jīng)常出現(xiàn)一些問(wèn)題,這里就來(lái)看一下CSS使用BFC規(guī)則布局引發(fā)外層div包裹內(nèi)層div的處理方法,需要的朋友可以參考下.
    2016-06-03
  • CSS理解塊級(jí)格式上下文(BFC)

    BFC(Block formatting context)直譯為"塊級(jí)格式化上下文"。它規(guī)定了內(nèi)部的Block-level Box如何布局,并且與這個(gè)區(qū)域外部毫不相干.接下來(lái)通過(guò)本文給大家介紹CSS理
    2018-02-22

最新評(píng)論

望都县| 墨玉县| 道孚县| 通州区| 萍乡市| 乌鲁木齐市| 寻乌县| 耒阳市| 竹山县| 庆安县| 乌兰察布市| 昌江| 广安市| 鹤峰县| 天镇县| 沈阳市| 凤翔县| 古交市| 资中县| 唐山市| 桐乡市| 彭山县| 天津市| 乳源| 顺昌县| 惠水县| 巴楚县| 双牌县| 宝山区| 绥棱县| 苗栗县| 吴桥县| 连城县| 阿坝| 桃源县| 南雄市| 鹰潭市| 夏河县| 五家渠市| 乌苏市| 乌兰浩特市|