Re: [CSS21] Proposal for a replacement for section 17.2.1 (table anonymous objects)

On Tue, Jul 20, 2010 at 5:16 PM, Tab Atkins Jr. <jackalmage@gmail.com> wrote:
> Final proposal for issue 110!  For the purpose of solving this issue
> for CSS2.1, I propose accepting Fantasai's revised algorithm for
> table-repair, with a small correction so that it properly handles
> floated elements inside a table* element:
>
>
> Replace the list of rules in 17.2.1 with the following:
>
[snip]
>
> Changes from fantasai's original proposal, written on May 7th:
>
> * text is rewrapped to 70ch to avoid it getting ugly-wrapped again.
> * definition of 'consecutive' is clarified to specifically exclude
> abspox and fixpos, not floats.
> * clarification added to all the substeps in step 2 to ensure that
> abspos and fixpos elements don't generate wrappers around themselves.
> * informative note added at the end, clarifying the intent that abspos
> and fixpos elements don't interact with the table-repair algorithm,
> and explicitly stating the static position as undefined.

The practical ramifications of this change are:

(1) All implementations will have to change slightly, to avoid
generating a "placeholder cell" when a run of abspos/fixpos elements
have a "tabular container" parent.

This isn't as bad as it sounds, though - I believe all implementations
have to change already to implement fantasai's original algorithm, as
they all interpret the ambiguous text in the current spec in different
ways.

The good thing is that this is the sanest behavior in the long run,
and will be consistent with how future layout managers like Flexbox
handle "misplaced" abspos children.

(2) Determining the static position of abspos/fixpos elements with a
"tabular container" parent is explicitly undefined in CSS2.1, to be
fixed up later in CSS3.  Implementations calculate this differently
right now, so going explicitly undefined means the difference is no
longer relevant for 2.1 testing purposes.  ^_^

~TJ

Received on Wednesday, 21 July 2010 00:28:25 UTC