总是会遇见在FIREFOX 里面设置的magin-top 或者margin-bottom 被叠加、不显示等等现象,解决方法很简单,比如不用margin而改用padding,加float等,但是到底为什么会出现这个问题,从来没有仔细想过,今天就查了查,弄清楚了这个问题。

首先是问题描述:

  1. 一个元素出现在另一个元素上面时,第一个元素的底空白边与第二个元素的顶空白边发生叠加
  2. 当一个元素包含在另一个元素中时(假设没有填充或边框将空白边分隔开),它们的顶和/或底空白边也发生叠加

   出现这种问题并不是浏览器的解释有BUG,或者浏览器对W3C支持不好,那就冤枉人家了,出现这种现象是W3C CSS2.1 规定的正常的现象。为什么在IE里面没有呢?那是因为IE中你设定了宽度和高度,触发了IE的layout,如果你去除你例子中的宽度和高度(记得给子元素增加内容文字),你会发现他的现实效果其实和你一开始在FF中是一致的。(也就是说,出现这种现象是正常的,不出现的才不正常了。)

只有普通文档流中块框的垂直空白边才会发生空白边叠加。内框浮动框绝对定位框之间的空白边不会叠加。

 

参考资料:http://book.csdn.net/bookfiles/136/1001364670.shtml