为什么会折叠:
造成以上现象的原因是,我们在css中并没有声明id为ID1的元素div的height(高),因此它的高便被设为auto(自动)了.一旦其值被设为auto,那么浏览器就会认为它的高为子元素ID2的border-top到border-bottom之间的距离,即Fig.4中bc的长度,所以子元素ID2的margin-top/bottom(30px)就伸出到了父元素ID1之外,出现了Fig.4中ab与cd之间的空白区域.因此父元素ID1的margin-top/bottom因子元素的”红杏出墙”而被折叠消失了.
如何解决折叠问题:
可能大家最初想到的办法就是根据折叠发生的原因—auto,来解决问题.但是,在实际操作中,某些元素如div,h1,p等,我们是不可能预先知道它的高是多少的,因此在css文件中是不能常规通过声明元素的高来解决折叠问题.
广州网站建设,网站建设,广州网页设计,广州网站设计
我们需要在css文件中加入如下代码(红色部分):
- #ID1{
- background-color:#333;
- color:#FFF;
- margin-top:10px;
- margin-bottom:10px;
- padding-top:1px;
- padding-bottom:1px;
- }
- 或是:
- #ID1{
- background-color:#333;
- color:#FFF;
- margin-top:10px;
- margin-bottom:10px;
- border-top:1pxsolid#333;
- border-bottom:1pxsolid#333;
- }
通过增加以上代码,便可使浏览器重新计算ID1的高,使其为子元素ID2的margin-top/bottom外缘(outertop/bottom)之间的距离,即Fig.3中be的距离.