margin重疊與穿透問題

2022-04-02 10:47:39 字數 858 閱讀 3428

出現margin重疊的原因: 同乙個bfc裡面兩個塊級元素會出現margin摺疊。

解決方式:讓兩個塊級元素不在乙個bfc內。

預設情況,子元素設定margin-top或者margin-bottom會影響其父元素,這就是所謂的margin穿透。解決方式:1.給父元素加個border; 2.將父元素變成bfc。

bfc: block formatting context 簡稱 塊級格式化上下文

bfc的特點: bfc是乙個絕對的獨立空間,它的內部元素是不會影響到外部元素的!!!

bfc布局規則:

內部的box會在垂直方向,按照從上到下的方式逐個排列。

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

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

bfc的區域不會與float box重疊

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

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

元素首先需要是乙個block元素,才能變成bfc;

觸發bfc的條件:

因此通過將其中乙個元素display屬性設定為inline-block,width設定為100%是比較好的解決方式;既解決了margin穿透問題,又達到與display為block一樣的效果。

延伸:

與bfc對應的另外乙個概念ifc(inline formatting context) 行內格式化上下文

margin重疊問題

寬高100,底外距50 寬高100,上外距20 a c.d 當div.c標籤無內容時 d標籤的上邊距消失了 div.c有內容時 d標籤上邊距顯示 當有div巢狀,且外層div無內容,此時內層div的margin會消失,解決辦法有6種 1.外層c標籤 overflow hidden padding t...

忽略的問題 margin重疊

1.margin同向重疊。問題描述 解決方法 e.給內層div們設定float屬性 記得最後閉合浮動或者清除浮動 2.margin異向重疊 問題描述 依舊如上圖,first和second盒子都有margin 10px,但是顯示出來兩個盒子的距離卻不是20px,而仍然是10px。也就是說此時上面盒子的...

margin 重疊問題的理解

塊級元素的上外邊距 margin top 與下外邊距 margin bottom 有時會合併為單個外邊距,這樣的現象稱為 margin合 並 產生摺疊的必備條件 margin必須是鄰接的 而根據w3c規範,兩個margin是鄰接的必須滿足以下條件 必須是處於常規文件流 非float和絕對定位 的塊級...