BFC與HasLayout的理解

2022-05-01 20:00:08 字數 2146 閱讀 3899

1、(block formatting contexts)bfc 定義

bfc(block formatting context)直譯為"塊級格式化上下文"。它是乙個獨立的渲染區域,只有block-level box參與, 它規定了內部的block-level box如何布局,並且與這個區域外部毫不相干。

2、bfc布局規則:

內部的box會在垂直方向,乙個接乙個地放置。

box垂直方向的距離由margin決定。屬於同乙個bfc的兩個相鄰box的margin會發生重疊

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

bfc的區域不會與float box重疊。

bfc就是頁面上的乙個隔離的獨立容器,容器裡面的子元素不會影響到外面的元素。反之也如此。

計算bfc的高度時,浮動元素也參與計算

3、哪些元素會生成bfc:

根元素float屬性不為none

position為absolute或fixed

display為inline-block, table-cell, table-caption, flex, inline-flex

overflow不為visible

1、haslayout:

『layout』 是 ie 的專有概念,它決定了元素如何對其內容進行定位和尺寸計算,與其他元素的關係和相互作用,以及對應用還有使用者的影響。。

當乙個元素的 『haslayout』 屬性值為 true 時,我們說這個元素擁有了乙個布局(layout),即成功觸發haslayout

預設擁有布局的元素:

, , , ,

, , , , ,

可觸發 haslayout 的 css 特性:

display: inline-block         /*all*/

height: (除 auto 外任何值)  /*僅適用ie6 7*/

width: (除 auto 外任何值)   /*僅適用ie6 7*/

float: (left 或 right)       /*all*/

position: absolute           /*all*/

writing-mode: tb-rl          /*all*/

zoom: (除 normal 外任意值)  /*僅適用ie6 7*/

ie7 還有一些額外的屬性(不完全列表)可以觸發haslayout :

min-height: (任意值)/*以下適用ie7+*/

min-width: (任意值)

max-height: (除 none 外任意值)

max-width: (除 none 外任意值)

overflow: (除 visible 外任意值,僅用於塊級元素)

overflow-x: (除 visible 外任意值,僅用於塊級元素)

overflow-y: (除 visible 外任意值,僅用於塊級元素)

position: fixed

總結:

1、layout是 ie 的專有概念,它決定了元素如何對其內容進行定位和尺寸計算,與其他元素的關係和相互作用,以及對應用還有使用者的影響。

2、bfc就是乙個不讓內部元素與外界相互影響包容浮動子元素並自身和外界的浮動盒子不重疊的盒子

3、tips:我們有時會用overflow:hidden的方法去清除浮動,就是因為觸發了元素的塊格式化上下文(ie6 7要申明zoom為1)

4、 ie有它自己的haslayout屬性,那麼非ie瀏覽器呢?非ie瀏覽器採用的就是bfc(塊格式化上下文)

5.haslayout的原理 ie 瀏覽器中,觸發 haslayout 的元素在進行高度計算的時候,其浮動的子元素也會參與運算。

談談煩人的hasLayout和BFC

在你的瀏覽器上編寫乙個小demo left right parent left child right child 好了,你會發現黑色的parent並沒有顯示出來。浮動元素的父容器並沒有被撐開,都是因為bfc和haslayout 有一點要說明,ie6 7中是沒有bfc的,而haslayout卻是ie...

高度塌陷與 BFC

在浮動布局中,父元素的高度預設是被子元素撐開的 當子元素浮動後,其會完全脫離文件流,子元素從文件流中脫離將會無法撐起父元素的高度,導致父元素的高度丟失 父元素高度丟失以後,其下的元素會自動上移,導致頁面的布局混亂 clear作用 清除浮動元素對當前元素所產生的影響 本質是為元素新增乙個margin ...

css複習 浮動與BFC

float 屬性定義元素在哪個方向浮動。以往這個屬性總應用於影象,使文字圍繞在影象周圍,不過在 css 中,任何元素都可以浮動。浮動元素會生成乙個塊級框,而不論它本身是何種元素。浮動的值 left 元素向左浮動。right 元素向右浮動。none 預設值。元素不浮動,並會顯示在其在文字中出現的位置。...