为什么这个HTML代码:
<html>
<head>
<style type="text/css">
.left { background-color: yellow; }
.right { float: right; background-color: lightgray; width: 150px; }
</style>
</head>
<div>
<div class="right">
<p>right</p>
</div>
<div class="left">
<p>left</p>
</div>
</div>
</html>
...导致div.right
比div.left
更高(高度更大)(在FF和chrome中):
答案 0 :(得分:2)
答案 1 :(得分:2)
因为您悬空的是right div
而不是left div
。这意味着margin
上的p
位于right div
内,而left div
上的div
位于{{1}}的外侧
答案 2 :(得分:1)
您在这里看到的是折叠边距和浮动之间的相互作用。
考虑以下HTML:
<div class="wrap">
<div class="right">
<p>right</p>
</div>
<div class="left">
<p>left</p>
</div>
</div>
除了包装元素之外,这基本上就是你所拥有的。
现在看看CSS:
.wrap {
outline: 2px dotted red;
padding: 1px;
}
p {
outline: 1px dotted blue;
margin: 2.00em 0;
}
.left {
background-color: yellow;
}
.right {
float: right;
background-color: lightgray;
width: 150px;
}
我添加了.wrap
1px填充,以确保您可以看到边距的影响。
现在这里是小提琴:http://jsfiddle.net/audetwebdesign/9hhkk/
您在此处看到的是同一基线上的文本,右侧浮动文本正如您所期望的那样。左右元素都有相同的边距。
在您的示例中,.left
的上边距与其包含块的上边距折叠。但是,.right
元素是浮动的,并且浮动元素的边距不会折叠,因此您会看到额外的填充。
我设置了我的演示,以便插入元素的边距不会崩溃。