如何建立塊級格式化上下文?塊級格式化內容相關的作用

來源:互聯網
上載者:User
css中塊級格式化上下文是什嗎?塊級格式化上下文(Block Formatting Context)是網頁CSS視覺渲染的一部分,並用於決定塊盒子的布局。在定位體系(Positioning Scheme)中它屬於常規流(Normal Flow),那麼如何建立塊級格式化上下文?建立塊級格式化需要滿足哪些條件?本文將給你一一說明。

FC(Formatting Context)翻譯過來就是格式化上下文/格式化範圍,指的是頁面配置中的一塊地區,它擁有自己的渲染規則,決定自己的子項目如何布局,並和其他元素的關係和作用。

根據css顯示分類,xhtml元素被分為三種類型:塊狀元素,內嵌元素,可變元素。給頁面元素加樣式的時候我們得知道這個元素是什麼類型,然後可以自己對元素類型轉化。就像我們可以通過display來讓某個內嵌元素變成塊狀元素(display:block)。有幾個特別的元素img,input預設是inline-block;

什麼是塊狀格式化上下文(BFC)?相當於一個特殊的地區。

如果一個元素符合了成為BFC的條件,該元素成為一個隔離了的獨立容器,元素內部元素會垂直的沿著其父元素的邊框排列,和外部元素互不影響 。

觸發 BFC 的條件如下:

1、浮動元素,float 除 none 以外的值

2、絕對位置元素,position(absolute,fixed)

3、display 為以下其中之一的值 inline-blocks,table-cells,table-captions。//就是不是塊級盒子的塊容器

4、overflow 除了 visible 以外的值(hidden,auto,scroll)

滿足了上面這四個條件之一,就能夠建立塊級格式化上下文,它裡面的內容所處的環境就是塊級格式化內容相關的環境。

在 CSS3 中,BFC 叫做 Flow Root,並增加了一些觸發條件:

1、display 的 table-caption 值

2、position 的 fixed 值,其實 fixed 是 absolute 的一個子類,因此在 CSS2.1 中使用這個值也會觸發 BFC ,只是在 CSS3 中更加明確了這一點。

元素設定 IE 特有的 CSS 屬性 zoom: 1 觸發 hasLayout ,zoom 用於設定或檢索元素的縮放比例,值為“1”即使用元素的實際尺寸,使用 zoom: 1 既可以觸發 hasLayout 又不會對元素造成其他影響,相對來說會更為方便。這是ie下的情況

塊級格式化上下文(BFC)的作用:

(1) BFC 會阻止外邊距摺疊

我理解摺疊的意思就是外邊距會重疊,並不會分的很清,就像你的就是我的,我的也是你的。

外邊距摺疊的規則:僅當兩個區塊層級元素相鄰並且在同一個塊級格式化上下文時,它們垂直方向之間的外邊距才會疊加。也就是說,即便兩個區塊層級元素相鄰,但當它們不在同一個塊級格式化上下文時它們的邊距也不會摺疊。因此,阻止外邊距摺疊只需產生新的 BFC 。

但是對於兩個相鄰元素來說,意義不大,沒有必要給它們加個外殼,但是對於嵌套元素來說就很有必要了,只要把父元素設為BFC就可以了。這樣子項目的margin就不會和父元素的margin發生摺疊了。

(2) BFC 可以包含浮動的元素

這說明BFC中子項目不會超出他的包含塊,而position為absolute的元素可以超出他的包含塊邊界

(3) BFC 可以阻止元素被浮動元素覆蓋

這是根據每個元素的margin box的左邊, 與包含塊border box的左邊相接觸(對於從左往右的格式化,否則相反)。即使存在浮動也是如此。這個原理實現的。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.