- From: Boris Zbarsky <bzbarsky@MIT.EDU>
- Date: Fri, 04 Jul 2003 09:51:27 -0500
- To: "J. King" <mtknight@dark-phantasy.com>, www-style@w3.org
J. King wrote:
> margin:auto not centering vertically has always seemed to me like a
> limitation that was overlooked because of the continuous nature of
> HTML.
Not "overlooked", so much as "designed out".
When you consider the CSS box model, there is a fundamental asymmetry
between width and height. In particular, for normal block layout:
For width, the width of a block is determined by ancestors of the block
and its own styling.
For height, the height of a block is determined by descendants of the
block and its own styling (this leads to things like "percentage height
means auto height if the parent height is auto").
This asymmetry was certainly introduced because of the abovementioned
continuous nature of HTML.
There are parts of the CSS2 specification that do not have that
asymmetry to quite the same degree -- to whit, table cells shrink-wrap
in the horizontal direction. You will note, however, that the layout
algorithms for these are completely unspecified ("fixed" table layout
does not count, since there is no shrink-wrapping involved there), which
makes that part of the specification rather useless, really...
(implementors have to code tables by reverse-engineering IE, because
there is no spec to follow).
The point is, to solve the problems that people want to be solved,
pretty much the entire box model would have to be thrown out and
rewritten from scratch. This would make the layout specified by
whatever version of CSS does this be be different than the layout
specified by CSS1/CSS2 in many cases (one could perform bizarre spec
gyrations to avoid it, but the result would only be an unimplementable
spec)...
As it happens, Mozilla does implement two box models -- the CSS box
model for HTML/generic-XML and the XUL box model for XUL (this latter is
constraint-based and fits the needs of a UI-writer as opposed to those
of a document-writer). The interaction of the two box models is rather
ill-defined; they are essentially not usable together in the same
document in any sane way. I've not seen a way to make them be usable
together thus far....
-Boris
Received on Friday, 4 July 2003 10:56:17 UTC