margin重叠问题

相邻垂直元素

<div class='a'>a</div>
<div class='b'>b</div>
.a{
    width:100px;
    height:100px;
    background-color: #ccc;
    margin-bottom:30px;
}
.b{
    width:100px;
    height:100px;
    background-color: #ddd;
    margin-top:50px;
    
    /* 以下三种方式都可以防止margin重叠 */
    /* position: absolute; */
    /* display:inline-block; */
    /* float:left; */
}

 

相邻&嵌套元素 

<div class="a">
    宽高100,底外距50
</div>
<div class="c">
    <div class="d">宽高100,上外距20</div>
</div>

 

.a{
    width:100px; 
    height:100px;
    margin-bottom:50px;
    background-color: #ddd;
}
.c{
    width:150px;
    height:150px;
    background-color: #aaa;
    margin-top:20px;
/*     以下三种任一都可解决c标签外margin重叠、内部d标签margin消失问题 */
/*     position:absolute; */
/*     float:left; */
/*     display:inline-block; */
    
/*     以下三种任一仅可解决d标签margin消失问题 */
/*     overflow:hidden; */
/*     padding-top:1px; */
/*     border:1px solid transparent; */
}
.d{
    width:100px;
    height:100px;
    background-color: #ddd;
    margin-top:20px;
    
/*    以下三种仅可解决d标签自身margin消失问题  */
/*     position:absolute; */
/*     float:left; */
/*     display:inline-block; */
}

当div.c标签无内容时:d标签的上边距消失了

div.c有内容时:d标签上边距显示

 

结论: 

当有div嵌套,且外层div无内容,此时内层div的margin会消失,解决办法有6种:

     1.外层c标签:

               overflow:hidden;
               padding-top:1px;
               border:1px solid transparent;

      2.内层d标签

               position:absolute;
               float:left;
               display:inline-block;

 最为通用的解决div外部margin被较大值覆盖、或内部div的margin消失问题,方法有三种:

    position:absolute;
    float:left;
    display:inline-block;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值