盒子嵌套带来的margin塌陷问题的6种解决办法

在嵌套盒子中给子盒子设置一个margin-top后,会传递给父级元素,带来marin塌陷问题

<style type="text/css" rel="stylesheet">
        body{
            margin:0;
            padding:0;
        }
        *{
            box-sizing:border-box;
        }
        .wrap{
            width:200px;
            height:200px;
            background-color:darkgrey;
        }
        .inner{
            width:100px;
            height:100px;
            background-color:blanchedalmond;
            margin-top:30px;
        }
    </style>
<body>
    <div class="wrap">
        <div class="inner"></div>
    </div>
</body>

效果如图所示
1215426-20170904161639194-2090194468.png

6中解决方法

1.给父盒子添加border(添加border之后,父子元素就不是真正意义上的贴合)

<style type="text/css" rel="stylesheet">
        body{
            margin:0;
            padding:0;
        }
        *{
            box-sizing:border-box;
        }
        .wrap{
            width:200px;
            height:200px;
            background-color:darkgrey;
            border:1px solid greenyellow;
        }
        .inner{
            width:100px;
            height:100px;
            background-color:blanchedalmond;
            margin-top:30px;
        }
    </style>
<body>
    <div class="wrap">
        <div class="inner"></div>
    </div>
</body>

效果如图所示
1215426-20170904161824007-1944360410.png

2.给父盒子设置padding-top

<style type="text/css" rel="stylesheet">
        body{
            margin:0;
            padding:0;
        }
        *{
            box-sizing:border-box;
        }
        .wrap{
            width:200px;
            height:200px;
            background-color:darkgrey;
            padding-top:10px;
        }
        .inner{
            width:100px;
            height:100px;
            background-color:blanchedalmond;
            margin-top:30px;
        }
    </style>
<body>
    <div class="wrap">
        <div class="inner"></div>
    </div>
</body>

效果如图所示
1215426-20170904162026397-381361653.png

3.给父盒子添加overflow:hidden

<style type="text/css" rel="stylesheet">
        body{
            margin:0;
            padding:0;
        }
        *{
            box-sizing:border-box;
        }
        .wrap{
            width:200px;
            height:200px;
            background-color:darkgrey;
            overflow:hidden;//触发BFC
        }
        .inner{
            width:100px;
            height:100px;
            background-color:blanchedalmond;
            margin-top:30px;
        }
    </style>
<body>
    <div class="wrap">
        <div class="inner"></div>
    </div>
</body>

效果如图所示
1215426-20170904184244319-421788716.png

4.父盒子:position:fixed;

<style type="text/css" rel="stylesheet">
        body{
            margin:0;
            padding:0;
        }
        *{
            box-sizing:border-box;
        }
        .wrap{
            width:200px;
            height:200px;
            background-color:darkgrey;
            position:fixed;
        }
        .inner{
            width:100px;
            height:100px;
            background-color:blanchedalmond;
            margin-top:30px;
        }
    </style>
<body>
    <div class="wrap">
        <div class="inner"></div>
    </div>
</body>

效果如图所示
1215426-20170904184158616-1476103331.png

5.父盒子:display:table;

<style type="text/css" rel="stylesheet">
        body{
            margin:0;
            padding:0;
        }
        *{
            box-sizing:border-box;
        }
        .wrap{
            width:200px;
            height:200px;
            background-color:darkgrey;
            display:table;
        }
        .inner{
            width:100px;
            height:100px;
            background-color:blanchedalmond;
            margin-top:30px;
        }
    </style>
<body>
    <div class="wrap">
        <div class="inner"></div>
    </div>
</body>

效果如图所示
1215426-20170904184119538-1043402720.png

6.利用伪元素给子元素的前面添加一个元素

<style type="text/css" rel="stylesheet">
        body{
            margin:0;
            padding:0;
        }
        *{
            box-sizing:border-box;
        }
        .inner:before{
            content:"";
            overflow:hidden;
        }
        .wrap{
            width:200px;
            height:200px;
            background-color:darkgrey;
            display:table;
        }
        .inner{
            width:100px;
            height:100px;
            background-color:blanchedalmond;
            margin-top:30px;
        }
    </style>
<body>
    <div class="wrap">
        <div class="inner"></div>
    </div>
</body>

效果如图所示
1215426-20170904183933257-1427769483.png

转载于:https://www.cnblogs.com/laijun/p/7474997.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值