margin的合併與float浮動的討論

2021-10-21 22:45:02 字數 1058 閱讀 1167

margin 合併現象:

2)清除浮動後,該元素的margin-top將會與上一浮動元素的padding+height+margin之和取最大值,成為該元素與浮動元素上乙個兄弟元素(沒有則為父級元素頂部)之間的距離

3)當某一元素為其父級元素的第乙個或最後乙個元素時(若其緊貼父級元素的上邊或下邊)會發生上或下邊距合併。上邊距合併:父元素與子元素之間不存在上邊框、上內補、清除浮動屬性之一(或將父級元素的overflow設為hidden也可。注:該方法不適用於body標籤,除非將body標籤與html標籤同設為overflow:hidden),則會取二者margin-top最大值設為父級元素的margin-top;下邊距合併:父級元素與子級元素之間沒有border、padding以及父級元素沒有多餘的高度(及該子級元素佔滿父級元素剩餘高度)或父級元素未使用overflow:hidden,則會發生下邊距合併,與上邊距合併現象相同,取二者之間最大值。

4)當某元素為空塊元素,即該元素沒有高度時,該元素的上下margin將會合併,取最大值。為其設定乙個高度將會有效解決這種情況

當乙個元素設定為浮動時,因其脫離了文件流,其下乙個兄弟元素若不設為浮動(或不清除浮動),則不能檢測到該元素的存在,因而該兄弟元素的margin-top定位於該元素的上乙個兄弟元素(若該元素為首個子元素,則定位於父元素頂部)。當該兄弟元素用clear清除浮動後,該兄弟元素的margin-top會與上層的浮動元素的padding-top+height+margin的值進行取最大值,相當於在未清除浮動時,將二者最大值設為該兄弟元素的margin-top

某元素設定overflow:hidden後,將會清除其兄弟元素的浮動,並在緊貼其兄弟元素的一側(如果其兄弟元素的float為left的話)(與將其設為浮動類似,但唯一不同的是,該元素並未浮動)

等同於(注意是等同於)若該元素的上乙個兄弟元素的float為left,則overflow:hidden會將該元素的margin-left設為該兄弟元素所佔空間的寬度,而margin-top會設為0,(即與該兄弟元素的頂部同處於一條水平線上)

clear:left會將該元素的margin-left設為0(即對齊父元素),而margin-top將會被設為該兄弟元素所佔空間的高度

margin塌陷 margin合併

原理 父子巢狀元素在垂直方向的margin,父子元素是結合在一起的,他們兩個的margi會取其中最大的值。正常情況下,父級元素應該相對瀏覽器進行定位,子級相對父級定位。但由於margin的塌陷,父級相對瀏覽器定位.而子級沒有相對父級定位,子級相對父級,就像坍塌了一樣。原理 兩個兄弟結構的元素在垂直方...

float和margin的區別

padding 10px 0 10px 20px,上10 右0 下10 左20 margin 10px 0 10px 20px,上10 右0 下10 左20 四個值順時針旋轉 目前web2.0已經越來被人們認可,因為喜歡搞web開發的人員不得不硬著頭皮去學習web2.0的標準,其中很重要的一條就是新...

margin塌陷 margin合併的解決

父子巢狀元素垂直方向的 margin,父子元素是結合在一起的,他們兩個會取其中最大的值 正常情況應該是父級相對於瀏覽器進行定位,子級應該相對於父級定位的 但是 margin 塌陷是在父級相對於瀏覽器進行定位時,子級沒有相對於父級定位,就像父級的棚子沒有了一樣子級相對於父級,就像塌陷了一樣 a.給父元...