float和margin混合作用的问题

html的结构如下:

<div class="box">
  <div class="left">left</div>
  <div class="right">right</div>
</div>

情形1:

    div.box{
    height:260px;
    width:400px;    border:1px solid black;
}
div.left{
    float:left;
    height:30px;
    width:400px;
    border:1px solid red;
} 

div.right{
    float:left;
    height:30px;
    width:400px;
    border:4px solid green;
    margin-left:-300px;
    text-align:right;
}

效果

图片描述

1。 两个框不在同一行,div.left已经占满第一。
2。 第二个框向左移动300px

情形2

    div.box{
    height:260px;
    width:400px;    border:1px solid black;
}
div.left{
    float:left;
    height:30px;
    width:400px;
    border:1px solid red;
} 

div.right{
    float:left;
    height:30px;
    width:400px;
    border:4px solid green;
    margin-left:-600px;
    text-align:right;
}

效果如图:

图片描述

1。 两个框在同一行,为何发生重叠?

请问,如何解释情形2?绿框发生了什么行为?移动了多少?为何会重叠?

阅读 4.8k
1 个回答

margin-left:-600px;让left和right加起来的宽度小于box的宽度,所以left和right都float在第一行,right在left的右边,由于right 的margin-left:-600px;所以往左移动600px;left长400px,right相对于left向左偏移200px。

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