john farrow wrote:
Hi Eliot
My reading of 7.5.1 in the spec about absolute-position was that the
block-container was offset from the containing area, not the
containing reference area, although what you say about a block not
establishing a reference area makes sense.
In 7.2 the "containing block" is described as the nearest ancestor
block area which is not a line area, and in the definition of "left"
in 7.5.5. the offset specified by left is said to be from the
"containing block", which I take to mean the immediate parent block,
not the reference area.
I have the feeling I am missing something - can you point me to
somewhere else in the spec where it says a block is positioned
relative to the containing reference area as opposed to the
containing area ?
I think the section you want is section 4. Area Model. This paragraph
from 4.2.2 Common Traits establishes the primacy of reference areas
(italics mine):
"Each area has the traits top-position, bottom-position,
left-position, and right-position which represent the distance from
the edges of its content-rectangle to the like-named edges of the
nearest ancestor *reference area* (or the page-viewport-area in the case
of areas generated by descendants of formatting objects whose
absolute-position is fixed); the left-offset and top-offset determine
the amount by which a relatively-positioned area is shifted for
rendering. These traits receive their values during the formatting
process, or in the case of absolutely positioned areas, during
refinement."
I think the key thing is that in XSL-FO the distinction between block
and block container overrides the CSS concept of block. As the base
properties are all taken verbatim from CSS, it can be a bit confusing if
you look just at the property definition and don't synthesize it through
the FO-specific area model and whatnot.
I agree that it's a challenge to get it all straight in one's mind and
hold it there.
Cheers,
Eliot
--
W. Eliot Kimber
Professional Services
Innodata Isogen
9030 Research Blvd, #410
Austin, TX 78758
(512) 372-8122
eliot(_at_)innodata-isogen(_dot_)com
www.innodata-isogen.com