A common problem that I have with web pages is floating div
tags creeping outside of their containers, like shown in the snippet.
#wrapper {
border: 1px solid red;
}
#wrapper div {
float: left;
font-size: 3em;
}
<div id="wrapper">
<div>Hello World</div>
</div>
There are a lot of dirty ways to fix this (i.e., inserting a div
with clear:both
)
However, a much neater solution I have seen is setting the wrapper div
with overflow
set to hidden
:
#wrapper {
border: 1px solid red;
overflow: hidden;
}
#wrapper div {
float: left;
font-size: 3em;
}
<div id="wrapper">
<div>Hello World</div>
</div>
This works well across browsers, nice and cleanly with no additional markup. I am happy, but I have no idea WHY it works this way?
All the documentation, I had looked at, indicates overflow:hidden
is for hiding content, not resizing a parent to fit its children...
Can anybody offer a explanation for this behavior?
Thanks
Original snippets: Live example 1: http://jsfiddle.net/ugUVa/1/ Live example 2: http://jsfiddle.net/ugUVa/2/