常出現兩種狀況:
(一)margin-top失效
先看下面代碼:
<div>
<div class="box1" >float:left</div>
<div class="box2">clear:both; margin-top:20px;</div>
</div>
兩個層box1和box2,box1具備浮動屬性,box2沒有,這時候設置box2的上邊距 margin-top沒有效果。
網上能找到的兩種比較靠譜的解釋:1:「在CSS2.1中,水平的margin不會被摺疊;垂直margin可能在一些盒模型中被摺疊…」2:當第一個層浮動,而第二個沒浮動層的margin會被壓縮,詳見--浮動元素後非浮動元素的margin的處理。
獲得解決問題思路:要浮動一塊兒浮動,要就一塊兒不浮動。
解決辦法:
1.box2增長float屬性
2.box1與box2之間增長一層"<div style="clear:both;"></div>"
(二)子元素設置margin-top做用於父容器
<div class="box" style="height:100px;background:red;">
<div class="box2">clear:both; margin-top:20px;height:50px;width:500px;background:#000;</div>
</div>
當給box2設置margin-top時,在FF下僅做用於父容器。
解決辦法:
1.給父容器box加overflow:hidden;屬性
2.父容器box加border除none之外的屬性
3.用父容器box的padding-top代替margin-topclass