- From: Anton Prowse <prowse@moonhenge.net>
- Date: Sun, 15 Jul 2012 10:33:00 +0200
- To: www-style@w3.org
- CC: fantasai <fantasai.lists@inkedblade.net>, Rossen Atanassov <Rossen.Atanassov@microsoft.com>
On 14/05/2012 21:44, fantasai wrote:
> On 05/14/2012 04:31 AM, Anton Prowse wrote:
>> On 13/05/2012 12:42, fantasai wrote:
>>> On 05/11/2012 06:18 AM, Tab Atkins Jr. wrote:
>>>> On Fri, May 11, 2012 at 2:58 PM, Morten Stenshorne<mstensho@opera.com>
>>>> wrote:
>>>>> Should the 'overflow' property apply to flexboxes? Implementations do
>>>>> support it, and I think it makes sense to do so.
>>>>>
>>>>> However, the flexbox spec (20120510) says that "Flexboxes are not
>>>>> block
>>>>> containers", and CSS21 says that 'overflow' applies to block
>>>>> containers
>>>>> only.
>>>
>>> We could say "block containers and boxes that estabish a formatting
>>> context", but I'm not sure how that interacts with tables. The table
>>> box presumably establishes a table formatting context.
>>
>> Actually it works fine for tables, since the Applies To line for
>> 'overflow' should have been "block containers and table
>> boxes" anyway (see
>> https://www.w3.org/Bugs/Public/show_bug.cgi?id=15381 ).
>>
>> I support your proposed wording, but I think it ought to be
>> accompanied by a modification to 9.4 in which the term "formatting
>> context" is introduced, and to Chapter 17, as follows.
>
> r=fantasai on all changes proposed :) Let's get these fixed.
>
> ~fantasai
>
> ====== All changes accumulated below for ease of reference ======
>
> In 11.1.1 (Overflow), replace:
>
> | Applies to: block containers
>
> with:
>
> | Applies to: block containers and boxes that establish a formatting
> context
>
> In 9.4 (Normal flow), replace:
>
> # Boxes in the normal flow belong to a formatting context, which may
> # be block or inline, but not both simultaneously. Block-level boxes
> # participate in a block formatting context. Inline-level boxes
> # participate in an inline formatting context.
>
> with:
>
> | Boxes in the normal flow belong to a formatting context, which in
> | CSS21 may be block, inline or table. In future levels of CSS, other
> | types of formatting context will be introduced. Block-level boxes
> | participate in a block formatting context. Inline-level boxes
> | participate in an inline formatting context. Table formatting
> | contexts are described in the chapter on _tables_.
>
> In 17.4 (Tables in the visual formatting model), replace:
>
> # [...] The table wrapper box establishes a block formatting context.
> # [...]
>
> with:
>
> # [...] The table wrapper box establishes a block formatting context,
> # and the table box establishes a table formatting context. [...]
>
> In 17.5 (Visual layout of table contents), replace:
>
> # Internal table elements generate rectangular boxes with content and
> # borders. Cells have padding as well. Internal table elements do not
> # have margins.
>
> with:
>
> # Internal table elements generate rectangular boxes which
> # participate in the table formatting context established by the
> # table box. These boxes have content and borders, and cells have
> # padding as well. Internal table elements do not have margins.
Also, in 10.1 (Definition of "containing block"), replace:
# 2. For other elements, if the element's position is 'relative' or
# 'static', the containing block is formed by the content edge of
# the nearest block container ancestor box.
with:
| 2. For other elements, if the element's position is 'relative' or
| 'static', the containing block is formed by the content edge of
| the nearest ancestor box that is a block container or which
| establishes a formatting context.
The proposal above is documented in [1] and the WG resolved to accept
it,[2] subject to clarifying when an inline formatting context is
established,[3] and with the proviso that the change to 11.1.1
('overflow') may be further modified based on an assessment of whether
that change matches reality.[3]
Specifically, the intention in CSS21 is that an inline formatting
context (IFC) can only be established by a block container box, and the
required clarification should make it clear that an IFC cannot be
established by an inline non-replaced element.
CSS21 currently says:
# 9.2.1 Block-level elements and block boxes
#
# [...] A block container box either contains only block-level
# boxes or establishes an inline formatting context and thus
# contains only inline-level boxes. [...]
# 9.2.2 Inline-level elements and inline boxes
#
# [...] Inline-level elements generate inline-level boxes, which
# are boxes that participate in an inline formatting context.
#
# An inline box is one that is both inline-level and whose
# contents participate in its containing inline formatting
# context. [...] Inline-level boxes that are not inline boxes
# [...] are called atomic inline-level boxes because they
# participate in their inline formatting context as a single
# opaque box.
# 9.4 Normal flow
#
# [...] Inline-level boxes participate in an inline formatting
# context.
# 9.4.2 Inline formatting contexts
#
# In an inline formatting context, boxes are laid out
# horizontally, one after the other, beginning at the top of a
# containing block. [...]
#
# [...] Thus, although line boxes in the same inline formatting
# context generally have the same width (that of the containing
# block), they may vary in width [...]. Line boxes in the same
# inline formatting context generally vary in height [...].
#
# [...]
#
# Line boxes are created as needed to hold inline-level content
# within an inline formatting context. [...]
I propose the following clarification:
Add, as the first sentence of 9.4.2 (Inline formatting contexts), the
following sentence:
| An inline formatting context is established by a block
| container box that contains no block-level boxes.
(I don't believe we've ever discussed whether an empty block container
box established an inline formatting context, but that's how I read
9.2.1 and I don't see any harm in that interpretation.)
Please register any objections by 25 July.
[1] http://wiki.csswg.org/topics/overflow-formatting-context
[2] http://lists.w3.org/Archives/Public/www-style/2012Jun/0475.html
[3] http://lists.w3.org/Archives/Public/www-style/2012Jun/0656.html
Cheers,
Anton Prowse
http://dev.moonhenge.net
Received on Sunday, 15 July 2012 08:33:50 UTC