W3C指出:
由于浮动框不在流中,所以在浮动框之前和之后创建的非定位块级盒子会垂直地像浮动框不存在一样。但是,为了给浮动框留出边距框的空间,与浮动框相邻的当前行框和后续行框会被适当地缩短。
对于div
,这个效果符合预期:
#a
{
width: 100px;
height: 100px;
background-color: blue;
float: left;
}
#b
{
width: 200px;
height: 200px;
display: block;
border: 1px solid black;
background-color: red;
}
<body>
<div id=a></div>
<div id=b></div>
</body>
Here the red
div
is block-level element, therefore it's ignoring the floating one. (if I changed red one to display: inline-block
it would appear next to floating one)
但是,如果我对一张图片应用display: block
,它不会忽略浮动的div
,为什么呢?
#a
{
width: 100px;
height: 100px;
background-color: blue;
float: left;
}
#b
{
width: 200px;
height: 200px;
display: block;
border: 1px solid black;
}
<body>
<div id=a></div>
<img id=b src="https://www.gravatar.com/avatar/5cb44dcd4ebddfea3ede8c6d46b02795?s=328&d=identicon&r=PG&f=1">
</body>
float
的首要目的是将内容围绕在像杂志文章中的图片周围时,这种行为是直观的。 - TylerH