overflow: hidden;
the overflow attribute tells the browser how to display content that goes beyond the bounds of the container. Some browsers render the content strangely and assume that the parent div has a set height or if empty no height, causing the child or floated divs to appear outside and in your case stack. Overflow hidden is supposed to hide anything that flows outside of the container, but in these cases it allows that parent container to recognize the content that should be within it and display correctly.
I can't see the jsfiddle so not sure what your display looks like, but often overflow: hidden or overflow:auto will allow the divs to correctly handle the contained content.