[CSS21] box "properties" - comments on Working Draft

I don't want to get too deep into the element vs box issue here, but I 
do think that if  we're not going to do much to resolve that issue for 
CSS21 then at least we should make the following changes to 9.2 which 
provide the semblance of a foundation for the willful interchangeability 
that is rampant from that point onwards.


Issue 1:

9.2.1.1 (Anonymous block boxes) says:

   # 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.

CSS properties are not associated to boxes; they're associated to 
elements and give rise to a corresponding visual effect on boxes. 
Moreover, the non-inherited 'display' property certainly doesn't have 
its initial value (which is 'inline').  This paragraph needs rephrasing 
along the lines of

   | An anonymous block box is rendered as if it arose as the principal
   | box of an element with 'display' value of 'block' whose inheritable
   | properties are inherited from the element which generates the
   | enclosing non-anonymous box (e.g., in the example just below the
   | subsection heading "Anonymous block boxes", the DIV), and whose
   | other non-inheritable properties have their initial value.  For
   | example, the font used for the content of the anonymous box is
   | inherited from the DIV, but the margins will be '0'.

or better still,

   | An anonymous block box is rendered as if it arose as the principal
   | box of a child element of the element generating the enclosing
   | non-anonymous box (e.g., in the example just below the subsection
   | heading "Anonymous block boxes", the DIV), such that the child
   | element has a 'display' value of 'block' and has no other property
   | set.  For example, the font used for the content of the anonymous
   | box is inherited from the DIV, but the margins will be '0' (the
   | initial value).


Issue 2:

The section goes on to say:

   # 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 P 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).

Note that the wording is better here (properties are set on /elements/), 
but I suggest:

s/apply to/affect/


Issue 3:

Similarly, in 9.2.2.1 (Anonymous inline boxes):

   # Such anonymous inline boxes inherit inheritable properties from
   # their block parent box. Non-inherited properties have their initial
   # value. In the example, the color of the anonymous inline boxes is
   # inherited from the P, but the background is transparent.

This could be replaced with something like:

   | An anonymous inline box is rendered as if it were generated by an
   | element with 'display' value of 'inline' whose inheritable
   | properties are inherited from the element (real or _virtual_) which
   | generates the enclosing block container box and whose
   | non-inheritable properties have their initial value.  In the
   | example, the color of the anonymous inline boxes is inherited from
   | the P, but the background is transparent.

where _virtual_ links to the paragraph under consideration above for 
9.2.1.1 where an "anonymous" element is introduced.  (I'm not tied to 
the term "virtual".)


Issue 4:

Related to all this is the question of whether the table wrapper box (a 
block container box which is the principal box of a table or inline 
table element) is an anonymous box.  I believe it must be, and this 
needs to be stated in 17.4.  The table wrapper box being anonymous 
essentially means that, by default, CSS properties apply to the 
non-anonymous (inner) table box, and that the wrapper box takes the 
initial values of the CSS properties as described above.  This then 
holds together with 17.4 where a specific subset of properties are said 
to affect the table wrapper box whilst the table box gets the initial 
values for these properties.  If the table wrapper box is not anonymous 
then most of its features (including box model features) are not defined 
anywhere.


Cheers,
Anton Prowse
http://dev.moonhenge.net

Received on Friday, 7 January 2011 20:44:14 UTC