New Bfc "clearing" Floating Boxes
As the example shows, applying display: inline-block; to the containing block seems to 'clear' the floating box within. I have no idea how this happens. All what I know is that di
Solution 1:
That's because inline-blocks with the default width: auto
are sized according to the shrink-to-fit algorithm. CSS2.1 does not fully define how that algorithm should handle floating contents, but it seems browsers do this:
- The inline-block is sized ignoring floats
- The line boxes inside the inline-block are as wide as the inline-block
- The float shrinks the line boxes
- Therefore, the non-floating contents no longer fit in the shrunk space, so the wrap to the next line.
Note there is no clearing, if you make the inline-block wide enough, the text will appear next to the float.
.wrapper.inline-block {
display: inline-block;
}
.w400 {
width: 400px;
}
.wrapper {
border: 1px solid;
}
.left-column {
background-color: teal;
float: left;
}
<p>Shrink-to-fit inline-block:</p><divclass="wrapper inline-block"><divclass="left-column"><p>Float</p></div><p>Non-float</p></div><p>Explicit width inline-block:</p><divclass="wrapper inline-blockw w400"><divclass="left-column"><p>Float</p></div><p>Non-float</p></div><p>Fill-available block:</p><divclass="wrapper"><divclass="left-column"><p>Float</p></div><p>Non-float</p></div>
Post a Comment for "New Bfc "clearing" Floating Boxes"