margin塌陷问题与合并问题

margin塌陷问题和合并问题都只对垂直方向有效

  1. margin塌陷问题

    这个问题是一个经典的浏览器内核问题。具体表现是当两个元素嵌套到一起时,外层盒模型的margin-top取两个元素中margin-top较大的值。

    因为在正常的情况下内层元素是相对于外层元素进行移动,但是这时内层元素却相对于整个文档进行移动,好像外层元素没有“棚顶”一样,因此叫margin塌陷问题。

    margin塌陷问题触发示例:

    
    <div class = "wrapper">
        <div class = "content"></div>
    </div>
    
    <!--css代码-->
    .wrapper{
        width:200px;
        height:200px;
        background-color:red;
        margin-top:100px;
    }
    .content{
        width:100px;
        height:100px;
        background-color:green;
        margin-top:150px;
    
        <!--此时的margin-top为150px。-->
    }
    

我们可以看到:此时的外层元素相对于整个文档的 margin-top = 150px;

margin塌陷问题解决方法:

1、给外层元素认为加一个“棚顶”:border。

这种方法虽然能够解决问题,但是在日常开发中我们不使用它,因为他在外观上对元素进行了改变。

2、bfc–block format context 块级格式化上下文

每一个元素都是一个盒子,每一个盒子都符合一定的渲染规则。我们可以通过触发bfc方式,让特定盒子里的渲染规则发生变化。我们要给外层元素加一个特定属性来触发bfc来解决margin塌陷问题。触发bfc的方式有以下四种,我们可以根据实际的需求采用不同的方法。


overflow:hidden;

display:inline-block;

position:absolute;

float:left;

2.margin合并问题

具体表现为两个元素并列时,两者相隔的外边距取的是两者所设置margin的最大值。

margin合并问题触发示例:


    <div class = 'box1'>box1</div>
    <div class = 'box2'>box2</div>



    <!--css代码-->
    .box1{
        background-color:red;
        margin-bottom:100px;
    }
    .box2{
        background-color:blue;
        margin-top:150px;
        <!--此时两者相隔的外边距为下面的box2所设置的margin-top:150px。-->
    }

margin合并问题解决办法:

我们仍然用bfc来解决。可以给其中一个元素包起来,在外层元素中设置bfc渲染规则。此时这个元素的渲染规则就改变了,就能够解决这个问题。

一般margin合并不解决,margin塌陷要解决

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值