Re: [CSS2.1] Clarifying 8.3.1 Collapsing Margins

Thanks for looking into fixing this bit of troublesome text.

On Wed, Jul 28, 2010 at 08:01:12PM -0700, fantasai wrote:

>  | In CSS, the adjoining margins of two or more boxes (which could be
>  | next to one another

"next to" is unclear: "next to" would usually be understood in a geometric
sense.  I suggest "could be siblings" if that is the intended meaning.

(Though of course that suggested replacement assumes that the box tree is
well-defined, which it isn't yet; and even when it is, the text needs to be
clear about when this "siblingness" is evaluated compared to the various box
tree manipulations (anonymous box generation, run-in handling): presumably
after them all, which I think is what the "can be ... elements that
are not ... siblings or ancestors" text is hinting at.)

>  | or could be nested) can combine to form a single margin.
>
>  | Margins that behave this way are called <dfn>collapsing margins</dfn>.

It isn't clear whether "collapsing margins" is defined as margins that do
combine, or margins that can combine (for example that meet the criteria given
in this sentence but don't meet the criteria that follow).

I suggest s/behave this way/combine in this way/.

Also, this "are called" wording is unclear as to whether any other
margins are considered collapsing margins.

Also, this text describes the phrase "collapsing margins", but most
parts of the spec talk of "margins that collapse" or similar, which isn't
clearly defined by a definition of "collapsing margins".  So please
put just the word "collapse" in <dfn>.

If we are to define the phrase "collapsing margins", then I believe the sole
use of the phrase "collapsing margins" in CSS2.1 (other than as the name of
this section of the text, and as distinct from "margins that collapse" etc.)
is in visuren.html, where it appears as "between two collapsing margins",
which is unclear as to whether this means two margins that collapse with each
other or whether it means two margins that each collapse with some other.


>  | Two margins are adjoining if and only if:
>  |   * no non-empty content, padding or border areas; line boxes;
>  |     or clearance separate them

The above has many different possible parsings:

  - Does "non-empty" associate with "padding" and "border areas" or just with
    "content" ?

  - Does "areas" associate with "content" and "padding" or just with "border" ?

Also, it's unclear what "empty" means.  For example, it's unclear whether
<div style="height:50px"></div> empty or not.

It's also unclear what "separate" means.  As with "next to", one would usually
interpret the word "separate" in a geometric sense, which would be unfortunate.

The word "clearance" isn't in the index, and the concept isn't introduced until
a later chapter.  Even if the reader had seen §9.5, it still isn't completely
clear how to decide whether or not any clearance separates two margins.
I'd suggest defining in terms of the box tree and the values of the 'clear'
property on those boxes.

>  | Vertical margins collapse if they are adjoining. [...]
>  | However:
>  |   [Exceptions]

It's not clear whether these exceptions modify the meaning of
"adjoining", or whether the exceptions contradict the first sentence.

>  |   * If the top and bottom margins of an element with clearance are

We probably want s/element/box/ here.

I haven't yet read the rest, sorry.

pjrm.

Received on Thursday, 29 July 2010 07:10:58 UTC