为什么不会对齐?

图片描述

.a,
.b {
    padding: 100px;
    background: #ccc;
    margin: 20px;
}
.a {
    float: left;
    background: pink;
} 

<div class="a"></div>
<div class="b"></div>
阅读 4.6k
9 个回答
CSS世界有句话, 大致意思是, 父子嵌套, 子级的 margin-top 会代替父级出力,
所以相当于 body 设置了margin-top , 然后 pink 又以body为起点.

图片描述

你给.a也设置了margin

a有margin-top的20px

.a {
    margin-top: 0;
    float: left;
    background: pink;
} 

把.a, .b{
...
}中的margin:20px去掉

两个知识点。1,可以查下浮动元素的上边界的位置。这里的 a 上边界应该是与body的第一个行盒的上边界对齐。在 body 下加一个 span 元素就很明显了。2,当 body 只有 block 子元素的时候,默认的行在哪。

margin融合,左右margin可融合,上下margin不可融合

margin融合引起的,是body和div.b的margin-top发生融合,及body的margin-top为20px,div.a为浮动元素,margin不会和父元素(body)融合,所以出现这种情况

去掉margin:20px

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题