Since you posted the <article> and <aside> elements, they exit the parent <div> stream.
Add the following property to the style of the parent element: overflow: auto or overflow: hidden .
<div style="background-color:#cccccc; overflow: auto;" class="clear_fix">
Why does it work
The reason the overflow property does the trick of how the CSS block formatting model works.
In particular, the relevant specification:
http://www.w3.org/TR/CSS21/visuren.html#block-formatting
Consider the following HTML snippet:
<div class="wrap"> <p>Some text...</p> <div class="floated">Floated text</div> </div>
In the Basic case, all of these elements are in a normal stream (without floats) and are formatted in the "block formatting context" defined by the root element of the page. Thus, they basically fill the width of the page and, being elements of the block, stack one on top of the other.
Consider Case 1 , in which we .floated . The float element is no longer in the normal stream, and it is located at the left edge of the parent container and is adjacent to the bottom of the paragraph, which is the closest block-level element for the element to be moved.
The border of the parent element wraps around the children of the normal stream, so floating-point elements (remember that formatting elements of the normal stream ignores the moved element, which determines the height of the parent container).
Now, in case 2 , let float .wrap . In this case, the parent element is compressed to match the contents, including both the child <p> and .floated . This is due to the fact that div.wrap now established a new format for block formatting, and as defined by CSS rules, it must enclose all edges from the fields it contains (including floats).
Finally, in case 3, we declare overflow: hidden on .wrap in the normal stream (not floating). Setting overflow to any value other than visible starts a new block formatting context. So .wrap still extends the entire width of the page, and now it also contains all the edges of any movable children, so the border wraps around the floating element.
Demo script: http://jsfiddle.net/audetwebdesign/VXL4B/