From the CSS 2.1 Spec
When an inline box contains a block
box, the inline box (and its inline
ancestors within the same line box)
are broken around the block. The line
boxes before the break and after the
break are enclosed in anonymous boxes,
and the block box becomes a sibling of
those anonymous boxes. When such an
inline box is affected by relative
positioning, the relative positioning
also affects the block box.
Example(s):
This model would apply in the
following example if the following
rules:
body { display: inline } p {
display: block }
were used with this HTML document:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD
HTML 4.01//EN"> <HEAD>
<TITLE>Anonymous text interrupted by a
block</TITLE> </HEAD> <BODY> This is
anonymous text before the P. <P>This
is the content of P.</P> This is
anonymous text after the P. </BODY>
The BODY element contains a chunk (C1)
of anonymous text followed by a
block-level element followed by
another chunk (C2) of anonymous text.
The resulting boxes would be an
anonymous block box around the BODY,
containing an anonymous block box
around C1, the P block box, and
another anonymous block box around C2.
The properties of anonymous boxes are
inherited from the enclosing
non-anonymous box (e.g. in the example
just below the subsection heading
"Anonymous block boxes", the one for
DIV). Non-inherited properties have
their initial value. For example, the
font of the anonymous box is inherited
from the DIV, but the margins will be
0.
Properties set on elements that cause
anonymous block boxes to be generated
still apply to the boxes and content
of that element. For example, if a
border had been set on the BODY
element in the above example, the
border would be drawn around C1 (open
at the end of the line) and C2 (open
at the start of the line).
Some user agents have implemented
borders on inlines containing blocks
in other ways, e.g. by wrapping such
nested blocks inside "anonymous line
boxes" and thus drawing inline borders
around such boxes. As CSS1 and CSS2
did not define this behavior,
CSS1-only and CSS2-only user agents
may implement this alternative model
and still claim conformance to this
part of CSS 2.1. This does not apply
to UAs developed after this
specification was released.
Make of that what you will. Clearly the behaviour is specified in CSS, although whether it covers all cases, or is implemented consistently across today's browsers is unclear.