Re: [CSS21] Proposal to define "Block container element"

Continuing my response[1] to fantasai's post...

On 25/07/2012 08:23, fantasai wrote:
> On 07/21/2012 03:09 AM, Anton Prowse wrote:
>> # 9.2.1 Block-level elements and block boxes
>> #
>> # *Block-level elements* are those elements of the source document
>> # that are formatted visually as blocks (e.g., paragraphs). The
>> # following values of the 'display' property make an element
>> # block-level: 'block', 'list-item', and 'table'.
>> #
>> # <del>Block-level boxes are boxes that participate in a block
>> # formatting context. Each block-level element generates a principal
>> # block-level box that contains descendant boxes and generated
>> # content and is also the box involved in any positioning scheme.
>> # Some block-level elements may generate additional boxes in
>> # addition to the principal box: 'list-item' elements. These
>> # additional boxes are placed with respect to the principal box.</del>
>> #
>> # <ins>The principal box of a block-level element is a block-level
>> # box. *Block-level boxes* are boxes that participate in a block
>> # formatting context.</ins> Except for table boxes, which are
>> # described in a later chapter, and <ins>the principal box of</ins>
>> # replaced elements, a block-level box is also a block container box.
>> # <del>A block container box either contains only block-level boxes
>> # or establishes an inline formatting context and thus contains only
>> # inline-level boxes. Not all block container boxes are block-level
>> # boxes: non-replaced inline blocks and non-replaced table cells are
>> # block containers but not block-level boxes.</del> Block-level boxes
>> # that are also block containers are called block boxes.
>> #
>> # <ins>Non-replaced inline blocks and non-replaced table cells are
>> # block containers but are not block-level.</ins>
>
> So rather than scrambling this section, I suggest:
>
>   # Block-level elements are those elements of the source document
>   # that are formatted visually as blocks (e.g., paragraphs). The
>   # following values of the 'display' property make an element
>   # block-level: 'block', 'list-item', and 'table'. <ins>Block-level
>   # elements generate block-level principal boxes.</ins>
>   #
>   # Block-level boxes are boxes that participate in a block formatting
>   # context. <movedto9.2>Each block-level element generates a principal
>   # block-level box that contains descendant boxes and generated content
>   # and is also the box involved in any positioning scheme. Some block-
>   # level elements may generate additional boxes in addition to the
>   # principal box: 'list-item' elements. These additional boxes are
>   # placed with respect to the principal box.</movedto9.2>
>   #
>   # Except for table boxes, which are described in a later chapter,
>   # and replaced elements, a block-level box is also a block container
>   # box. A block container box either contains only block-level boxes
>   # or establishes an inline formatting context and thus contains only
>   # inline-level boxes. Not all block container boxes are block-level
>   # boxes: non-replaced inline blocks and non-replaced table cells are
>   # block containers but not block-level boxes. <ins>The following values
>   # of the 'display' property make a non-replaced element generate a block
>   # container: 'block', 'list-item', 'table', 'inline-block', 'inline-table'.
>   # A non-replaced element whose principal box is a block container box is
>   # a block container element.</ins>
>   #
>   # Block-level boxes that are also block containers are called block
>   # boxes. <ins>Unless a block box `establishes a new formatting context`_,
>   # its contents participate its containing block formatting context.</ins>
>
> This minimizes the changes while keeping a coherent flow of ideas
> through/between each paragraph.

This is very similar to my Proposal B in [2].

I think the key thing we need to decide upon is whether block container 
boxes should be discussed in 9.2 or in 9.2.1.  (As I argued in [1], I 
prefer it to happen in 9.2, since block container boxes may be 
block-level, inline-level, flex-level....)  Let's deal with the other 
details afterwards.

> The last insertion isn't necessary for this issue, but fixes a missing
> idea that's already clear wrt inline boxes. Though
>    "participate in its containing block formatting context"
> is a little awkward, given we have the term "containing block". It's
> meant to parallel the similar statement in 9.2.2. We could replace both
> with
>    "participate in the same XXX formatting context as the XXX box itself"
> to be clearer.

I support the idea, but I'm not sure that the proposed change is totally 
correct.  Let's treat this as a separate topic.


[1] http://lists.w3.org/Archives/Public/www-style/2012Jul/0593.html
[2] http://lists.w3.org/Archives/Public/www-style/2012Jul/0415.html

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

Received on Saturday, 4 August 2012 10:45:55 UTC