在乙個bfc中,垂直方向上相鄰的塊級盒子產生外邊距塌陷,本文要說乙個特殊的外邊距塌陷情況,即當垂直方向上,兩個塊級盒子之間有個浮動元素相隔時,這個時候會產生什麼樣的效果呢?
.outer
.box
.top
.float
.bottom
class="outer">
class="top box">top
class="float">
class="bottom box">bottom
效果圖:
然後我把中間的div設定一下:
.float
class="float">float
效果如圖:
可知:浮動元素不會影響後續塊級盒子與前面塊級盒子的外邊距塌陷。
但當我們利用bottom清除浮動時
.bottom
效果圖:
可知:使用清除浮動屬性的元素,它的外邊距塌陷規則變成如下規則:閉合浮動的盒子的border-top始終和浮動元素的margin-bottom底部重合。而在閉合浮動的盒子的margin-top上方,直到top盒子的margin-bottom底部這段距離,就是我們所說的clearance。
驗證:給浮動元素加上margin-top
.float
2.調整浮動元素的高度和margin
.float
.bottom
效果圖:
此時bottom元素的margin-top和top元素的margin-bottom重合了5px。此時clearance的值是-5px。
通過上面兩個驗證,我們就可以知道有浮動元素時,閉合浮動元素的clearance是怎麼計算的了。乙個基本原則就是閉合浮動的元素的border-top與浮動元素的margin-bottom重合。
另外,從上面的驗證2中我們也可以總結出,浮動元素與border,padding這樣的遮蔽外邊距塌陷的屬性不同,浮動元素是脫離文件流的,所以當浮動元素沒有大到足以分開bfc中的相鄰盒子時,相鄰盒子的垂直margin還是會重疊的。
外邊距合併(外邊距塌陷)
使用margin定義塊元素的垂直外邊距時,可能會出現外邊距的合併。當上下相鄰的兩個塊元素相遇時,如果上面的元素有下外邊距margin bottom,下面的元素有上外邊距margin top,則他們之間的垂直間距不是margin bottom與margin top之和,而是兩者中的較大者。這種現象被稱...
外邊距塌陷 外邊距合併
1.父子塊級 元素外邊距塌陷 子元素加margin top,父元素也加margin top,如果父元素沒有設定margin top,那預設0,取的是其中最大 的值,這個效果作用父元素身上啦 原因 他倆共用乙個外邊距 解決 方法一 給父元素加 border padding 方法二 給父元素加overf...
外邊距合併及塌陷
垂直外邊距合併指的是,當兩個不浮動的元素,它們的垂直外邊距相遇時,它們將形成乙個外邊距。合併後的外邊距的高度等於兩個發生合併的外邊距的高度中的較大者。給一邊外邊距設大至達到設計間距,一般設定margin top 在兩個不浮動的盒子巢狀時候,內部的盒子設定的margin top會加到外邊的盒子上,導致...