以下是代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title></title>
<style type="text/css">
* {border: 0px; padding: 0px;}
#greenbox
{
margin: 20px;
border: 5px solid green;
}
#redbox
{
background-color: red;
margin: 20px;
float:left;
width:50%;
}
#bluebox
{
background-color: blue;
margin: 20px;
width: 50%;
}
</style>
</head>
<body>
<div id="greenbox">
<div id="redbox"> red box </div>
<div id="bluebox"> blue box </div>
</div>
</body>
</html>
根据W3C页面,背景颜色应该只对内容,填充和边框区域进行“着色”;不是利润。然而,虽然红色框和蓝色框文本之间有2 0px margin
,但由于某种原因,蓝框的背景颜色似乎包括上边距。我理解崩溃边缘的概念,但这似乎没有意义。
有人能弄清楚发生了什么吗?
答案 0 :(得分:3)
id“redbox”上忽略底部边距的原因是因为它向左浮动。如果你移除浮子,你会看到边缘被尊重。
如果您确实要求“redbox”浮动,那么您可以在“bluebox”上指定“clear:both”以获得要遵守的边距。
一般来说,任何浮动的东西都需要在之后清除。
答案 1 :(得分:0)
我认为您需要overflow: hidden
和#redbox
上的“#bluebox
”。
答案 2 :(得分:0)
这是因为#redbox
是浮动的。移除float: left
以查看您的期望。
答案 3 :(得分:0)
我明白了。
如果你在蓝框周围设置一个边框,你会发现蓝框实际上是在红框后面,大概是因为红框是浮动的,因此超出正常流程。
解决方案是使用overflow: auto
声明。