垂直方向margin塌陷现象

现象描述:标准文档流中,父子、兄弟结构的盒子,竖直方向的margin不叠加,以较大的为准。

说明:

  1. 实际开发中,只需解决父子结构盒子的margin塌陷问题;兄弟盒子的margin重合问题,可通过把margin都加在同一个盒子上的方法避免。
  2. 父子结构的盒子,其实也只是第一个 子盒子跟父盒子的margin会有塌陷问题,若后面还有其他子盒子,margin不叠加。

如果不在标准文档流中,比如两个盒子都浮动了,则不存在塌陷现象,上下margin可叠加。

 

例1:

<!DOCTYPE html>
<html>

<head>
    <title>垂直方向margin塌陷</title>
    <style type="text/css">
    * {
        margin: 0;
        padding: 0;
    }

    .box1 {
        width: 200px;
        height: 200px;
        background-color: red;
        margin-left: 100px;
        margin-top: 100px;

    }

    .box2 {
        width: 100px;
        height: 100px;
        background-color: green;
        margin-top: 50px;

    }
    </style>
</head>

<body>
    <div class="box1">
        <div class="box2"></div>
    </div>
</body>

</html>

例1图: 

 

例2:

<!DOCTYPE html>
<html>

<head>
    <title>垂直方向margin塌陷</title>
    <style type="text/css">
    * {
        margin: 0;
        padding: 0;
    }

    .box1 {
        width: 200px;
        height: 200px;
        background-color: red;
        margin-left: 100px;
        margin-top: 50px;

    }

    .box2 {
        width: 100px;
        height: 100px;
        background-color: green;
        margin-top: 200px;

    }
    </style>
</head>

<body>
    <div class="box1">
        <div class="box2"></div>
    </div>
</body>

</html>

例2图:


解决办法

根据具体需求,用以下几种方法让父盒子脱离标准流:

position:absolute;

display:inline-block;

float:left/right;

overflow:hidden;

例3:

<!DOCTYPE html>
<html>

<head>
    <title>垂直方向margin塌陷</title>
    <style type="text/css">
    * {
        margin: 0;
        padding: 0;
    }

    .box1 {
        width: 200px;
        height: 200px;
        background-color: red;
        margin-left: 100px;
        margin-top: 100px;
        position: absolute;
    }

    .box2 {
        width: 100px;
        height: 100px;
        background-color: green;
        margin-top: 50px;

    }
    </style>
</head>

<body>
    <div class="box1">
        <div class="box2"></div>
    </div>
</body>

</html>

例3图:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值