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/
 
     
     
    