- From: Peter Moulder <peter.moulder@monash.edu>
- Date: Wed, 03 Nov 2010 22:51:28 +1100
- To: www-style@w3.org
Comments on section 9.4 of editors' draft of CSS2.1 as published Oct 2010.
§9.4.1, what boxes establish new BFC:
Users of the specification need to know what boxes do or don't establish
a new block formatting context, whereas the current text only gives an
incomplete list of some cases that do establish a new block formatting
context.
Thus, please change the wording so that it gives a complete list of the
boxes that arise in CSS2.1 that establish a new block formatting context.
One possible wording would be: "A box establishes a block formatting
context if and only if ...".
Even if for some reason the incomplete list wording is retained, please
nevertheless make the list of examples complete (with respect to CSS2.1):
in particular, please add "outer table box" to the list (given §17.4 para
3 which says that it does establish a block formatting context, and §17.4
para 2 which says that it's a block box, and given that it does not in
general match any of the existing items in the §9.4.1 list).
§9.4.2, para 1, line box definition:
"The rectangular area that contains the boxes that form a line is called
a <dfn>line box</dfn>."
One problem with this definition is that there are an infinite number of
rectangular areas that contain the boxes that form a line.
Another issue is that such a definition establishes "line box" as a
geometrical region ("rectangular area"), and thus that "contains" should
be read in a geometrical sense. However, this conflicts with e.g. rules
for relative positioning, according to which some of the boxes that form
the line are not contained by the line box rectangle. I believe there
are also a number of other mechanisms by which the boxes of a line can
extend outside of (and thus are not "contained by") said rectangular
area.
Similarly, I believe we need phrases like a line box's "enclosing block
box" (13.3.3) (and similarly number of line boxes "between" a page break
and the start/end of a block box), an element containing a line box
(8.3.1), line box in which an element appears (8.6), first in-flow line
box "in" a table cell (17.5.3), and no doubt many other things, to be
understood as relationsips in a tree rather than geometrical
relationships.
I suggest that the fix for these problems is that we don't actually want
a definition for what a line box is: we want line boxes to exist where
and only where the spec explicitly says that a line box exists, we don't
want people to infer what rectangles are or aren't line boxes. So rather
than a definition, I believe we want just some clearly non-normative text
that introduces line boxes as CSS's abstraction for breaking text into
lines.
We can then say (perhaps normatively) that each line box has an
associated rectangle (i.e. a top, right, bottom and left) and that each
line box is contained by a block container box with an inline formatting
model, and contains a sequence of zero or more ordered inline-level
boxes.
§9.4.2, para 3, "Thus, a paragraph is a vertical stack of line boxes."
This seems not to be true in general. "Paragraph" seems not to be a
technical word in CSS (it isn't in the index or in conform.html for example),
so we must take it to mean its sense in English. A paragraph can be split
between multiple pages, in which case it is not a vertical stack of line
boxes.
(One might even go further and argue that a "paragraph" in the english
sense of the word isn't even required to limited to a single CSS block box,
and might be split over side-by-side blocks in a column-like effect.)
This sentence doesn't seem to be needed normatively, so I suggest simply
inserting the word "typically".
§9.4.2, para 3 "Line boxes are stacked with no vertical separation":
This seems to conflict with §9.5 para 4 "If a shortened line box is too
small to contain any further content, then it is shifted downward until
either it fits or there are no more floats present."
In the same sentence (§9.4.2 para 3), "they [i.e. line boxes] never
overlap" conflicts with e.g. the rules for negative margins. I suggest
changing it to "Line boxes of a given block box".
§9.4.2, para 4, "In general [line boxes touch the edge of their containing
block]":
s/In general/Usually/; or, more helpfully, remove "In general", and add
"; except that floating boxes ...".
§9.4.3, para 7: Typographical: missing single quote after 'ltr' in
... of the containing block is 'ltr, the value of 'left' wins
§9.4.3, para 7: missing specification of used value:
[I wrote the following issue before I'd seen the editors' draft where it
was changed from computed value to used value. That change reduces the
severity of this issue, just because there's a bit more expectation that
used values are the same as computed values unless otherwise stated,
compared to computed values.]
In the over-constrained case, we're told that one or other "wins" and that
one of them is ignored (or "'right' becomes −'left'": what does "becomes"
here mean?), but aren't told what the used values are.
I suggest dropping the "is ignored" and "becomes ..." parts, and adding
text "The used value of the property that wins is its specified value;
the used value of the other of the two properties is the negative of the
value of the property that wins." The text for the single-auto cases
could then be phrased in terms of "the property that is not 'auto' wins".
The overconstrained top/bottom paragraph has the same problem to a lesser
extent: it still has the issue of what "becomes" means and a missing
specification of what the used value is for 'top', though the "ignored"
phrase is explained in that case.
§9.4.3, no definition of "relatively positioned":
The phrase "relatively positioned" box or element (used in visuren.html
and visudet.html) might be misunderstood, because "absolutely positioned"
elements are said to be "positioned relative to ...", leaving doubt as to
whether or not absolutely positioned elements are included in the phrase
"relatively positioned" or not.
I suggest adding to §9.4.3:
A <dfn>relatively positioned</dfn> box or element is one whose
'position' property has computed value 'relative'.
where ‘'position'’ is hyperlinked to "#propdef-position", and
‘computed value’ is hyperlinked to "cascade.html#computed-value";
and adding this term to the index (or whatever preferred device for
marking a phrase as having a technical sense; note that indexlist.html
is currently marked non-normative, so there'd be some case for a separate
list or other device such as styling and some normative text about that
styling in about.html).
pjrm.
Received on Wednesday, 3 November 2010 11:52:01 UTC