margin坍塌

水平方向不会出现margin坍塌
今天在写代码过程中,解决了一个小问题,代码如下。
在.first的div中设置margin-top,效果却是和父div设置margin-top一样,网上又搜了答案总结一下

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <style type="text/css">
            .main{height: 400px;width: 200px;background: yellow;}
            .first{width: 100px;height: 100px;background: red;margin-bottom: 50px;margin-top: 100px;margin-right: 0px}
            .second{width: 100px;height: 100px;background: black;margin-top: 100px}
        </style>
    </head>
    <body>
    <div class="main">
        <div class="first"></div>
        <div class="second"></div>
    </div>  
    </body>
</html>

解决办法:

  1. 在父层div加上:overflow:hidden;
  2. 把margin-top外边距改成padding-top内边距 ;
  3. 父元素产生边距重叠的边有不为 0 的 padding 或宽度不为 0 且 style 不为 none 的 border。
    父层div加: padding-top: 1px;或者border:1px solid black
  4. 让父元素生成一个 block formating context,以下属性可以实现
    • float: left/right
    • position: absolute
    • display: inline-block/table-cell(或其他 table 类型)
    • overflow: hidden/auto
      父层div加:position: absolute;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值