BFC 以及 外邊距合併問題

2022-09-09 17:45:30 字數 1344 閱讀 2814

bfc定義:

bfc(block formatting context)直譯為"塊級格式化上下文"。

它是乙個獨立的渲染區域,只有block-level box參與,

它規定了內部的block-level box如何布局,並且與這個區域外部毫不相干。

bfc布局規則特性:

在bfc中 , 盒子從頂端開始垂直的乙個接乙個排列

盒子垂直方向的距離有margin決定,屬於同乙個bfc的兩個相鄰的盒子發生重疊

在bfc中,每個盒子的左外邊距(margin-left)會觸碰到容器的左邊緣(border-left)

bfc的區域不會與浮動盒子重疊,而是緊貼浮動邊緣。

浮動的元素會被父級計算高度(父級觸發了bfc)

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

bfc觸發條件: 

float屬性不為none

position為absolute或fixed

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

overflow不為visible

bfc用途:

清除浮動

解決 外邊距合併 問題  (讓兩個盒子不屬於同乙個bfc)

右側盒子自適應

外邊距合併:( 注: 只有普通文件流中塊框的垂直外邊距才會發生外邊距合併。行內框、浮動框或絕對定位之間的外邊距不會合併 )

當上下相鄰的兩個塊元素相遇時, 如果上面的元素有下外邊距margin-bottom,下面的元素有上外邊距margin-top,

則他們之間的垂直間距不是margin-bottom與margin-top之和,而是兩者中的較大者。這種現象被稱為相鄰塊元素垂直外邊距的合併(也稱外邊距塌陷)

解決方法:

1. (盒子垂直方向的距離有margin決定,屬於同乙個bfc的兩個相鄰的盒子發生重疊)  ==>  通過巢狀 讓兩個 內容區域  不屬於同乙個 盒子

2. 脫離普通文件流

3.最好避免

對於兩個巢狀關係的塊元素,如果父元素沒有上內邊距及邊框,則父元素的上外邊距會與子元素的上外邊距發生合併,

合併後的外邊距為兩者中的較大者,即使父元素的上外邊距為0,也會發生合併。

解決方法:

可以為父元素定義1畫素的上邊框或上內邊距。

可以為父元素新增overflow:hidden。

外邊距合併(外邊距塌陷)

使用margin定義塊元素的垂直外邊距時,可能會出現外邊距的合併。當上下相鄰的兩個塊元素相遇時,如果上面的元素有下外邊距margin bottom,下面的元素有上外邊距margin top,則他們之間的垂直間距不是margin bottom與margin top之和,而是兩者中的較大者。這種現象被稱...

外邊距塌陷 外邊距合併

1.父子塊級 元素外邊距塌陷 子元素加margin top,父元素也加margin top,如果父元素沒有設定margin top,那預設0,取的是其中最大 的值,這個效果作用父元素身上啦 原因 他倆共用乙個外邊距 解決 方法一 給父元素加 border padding 方法二 給父元素加overf...

外邊距合併

從3個簡單的小例子來看外邊距合併 給h1加50px的margin,但實際上h1和div的margin合併在一起了 detail設定margin為30px,header設定margin為30px,結果兩個相鄰元素之間的間距發生了合併 而且合併寬度是margin數值大的為準。如下圖detail和head...