This <h> should have a margin-top. Instead, the div gets it.

None of the divs in this page have a margin top.

Practically all browsers will give the parent divs the margin-tops.

Text in a styled <p> tag with a margin-top : again, the div takes it.

Some text inside an unstyled <p> tag. Notice the margin-top of this div.

The same problem occurs if you use an <h1>. (like the header of this page)

Text in an unstyled span - no margin-top is visible.

Once the first element is created, subsequent elements do not affect the margin-top

Text in a styled child div with a margin-top.

The parent div takes it - the same thing occurs with a span.