2.1.63 [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.