The "stack the blocks" concept works for the different sections of a "block" - margin, border, padding. However in CSS2, the default behaviour is for the vertical margins of "blocks" that adjoin each other (e.g. two paragraphs, one after the other) to "collapse" together, resulting in a shared margin which is equal in size to whichever individual margin is larger, rather than adding the two margins together.
So if the top paragraph has "margin-bottom:2em"
and the bottom paragraph has "margin-top:1em"
, the result would be a 2em space between the paragraphs, not a 3em space.
(For a detailed description of this behaviour, in all its glory and with all the technicalese and minutiae and exceptions