css经典bug:margin垂直方向塌陷。多种解决方式

先看代码,上效果图:

.parent {
    margin-top: 200px;
    
    width: 200px;
    height: 200px;
    background: red;
  }

  .child {
    margin-top: 50px;
    
    width: 100px;
    height: 100px;
    background: black;
  }
复制代码

margin在垂直方向上的使用有上下排列,跟内嵌两种情况,上面属于内嵌。 parant的margintop=200px,正常效果,但是child的margintop=50px却没有给到我们预期的效果,这是为什么呢?

可以理解为这是css的bug!不用纠结为什么,只知道怎么解决就可以了。下面总结了解决这种margin垂直方向塌陷的几种方式:

  • border,给parent加上border,就是说child有了顶部的参考了,所以他的margintop就起效
  • overflow: hidder
  • position:absoulate
  • float: left/right
  • display:inline-block 除了border的方式外的(overflow、position、float、display) 这几种方式为什么能够解决这个问题呢?这时候就该说到BFC(block fotmat context)了,这东东我的理解就是合模型的一种绘制方式,他与原本的绘制方式只有微乎其微的不同点,但恰恰就是那么一点不同刚好就能解决了塌陷的问题,所以我们只要触发BFC这种机制就好了;而上面说的
    overflow: hidder position:absoulate float: left/right display:inline-block 这些属性能够触发出BFC机制,所以问题就这样被解决了。

转载于:https://juejin.im/post/5c9dd9966fb9a05e617b1f9b

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值