Use a clear-fix instead of the overflow hidden. You want to clear the floats, and not actually hide the overflow. Read about that here:
http://nicolasgallagher.com/micro-clearfix-hack/
<header class="clear-fix"></header>
There are more elegant ways if you use a preprocessor etc.
.clear-fix:before,
.clear-fix:after {
content: " "; /* 1 */
display: table; /* 2 */
}
.clear-fix:after {
clear: both;
}
Here is a jsFiddle that should help.