CSS设置margin-top失效及解决办法
1、兄弟元素之间margin-top失效
<div> <div class="box1"> float: left div>
<div class="box2"> clear:both; margin-top:20px; div> div>
网上能找到的两种比较靠谱的解释:
2):当第一个层浮动,而第二个没浮动层的margin会被压缩,详见--浮动元素后非浮动元素的margin的处理。
解决办法:
2)、box1与box2之间增加一层"
2、子元素设置margin-top作用于父容器
class="box" style="height:100px;background:red;">
class="box2" style="clear:both; margin-top:20px; height:50px; width:500px; background:#000;"
解决办法:
2)、父容器box加border除none以外的属性
3)、用父容器box的padding-top代替margin-top
当两个空的块级元素嵌套时,如果内部的块设置有margin-top属性,而且父元素没有下边解决方法所述的特征,那么内部块的margin-top属性会绑架父元素(即将margin-top传递凌驾给了父元素)。
2)、设置父元素的border:1px aqua solid;(>0)
3)、设置父元素的padding:1px;(>0)
4)、给父元素设置overflow:hidden;
5)、给父元素或者自身设置position:absolute;
6)、设置父元素非空,填充一定的内容。
hasLayout 会影响一个盒子和其子孙的边距重叠。根据规范,一个盒子如果没有上补白和上边框,那么它的上边距应该和其文档流中的第一个孩子元素的上边距重叠。