2.2.35 [CSS-Level2-2009] Section 10.6.3, Block-level non-replaced elements in normal flow when 'overflow' computes to 'visible'
The specification states:
If it has block-level children, the height is the distance between the top border- edge of the topmost block-level child box that does not have margins collapsed through it and the bottom border-edge of the bottommost block-level child box that does not have margins collapsed through it. However, if the element has a non-zero top padding and/or top border, or is the root element, then the content starts at the top margin edge of the topmost child. (The first case expresses the fact that the top and bottom margins of the element collapse with those of the topmost and bottommost children, while in the second case the presence of the padding/border prevents the top margins from collapsing.) Similarly, if the bottom margin of the block does not collapse with the bottom margin of its last in-flow child, then the content ends at the bottom margin edge of the bottommost child.
Quirks Mode and IE7 Mode (All Versions)
Margins do not collapse if a value is specified for either padding or border. The computed height includes the non-collapsed margin.