Bug 1543267 Comment 0 Edit History

Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.

Right now we fail a few subtests in these WPT tests:
 https://wpt.fyi/results/css/css-flexbox/position-absolute-001.html
 https://wpt.fyi/results/css/css-flexbox/position-absolute-002.html?


The issues are all for cases where there's a flex container with a reversed main axis or cross axis (from `flex-direction: row-reverse` or `column-reverse`, or `flex-wrap: wrap-reverse`).

The test asserts that the static position of an abspos child should be at the "end" side of the flex container (the `flex-start` side, since the relevant flex axis is reversed with a `*-reverse` keyword in these cases).

We incorrectly place the abspos child at the `start` side. But we're wrong -- the relevant behavior here is the "normal" behavior (since "normal" is the default `align`/`justify` keyword), and the spec says:

> normal Behavior 	
>    For replaced absolutely-positioned boxes,
>    the 'normal' keyword behaves as 'start'.
>
>    For all other absolutely-positioned boxes, 'normal' behaves as 'stretch'
https://drafts.csswg.org/css-align/#align-abspos

The last line is the relevant one here -- `normal` is supposed to behave as `stretch`, and `stretch` "falls back to flex-start generally", which in this flex-axis-reversed scenario would mean the far/"end" side of the flex container.

Testcase attached -- currently we do the right thing for `flex-start` (the lime rect) but not for `stretch` or for the default behavior (the red and orange rects).
Right now we fail a few subtests in these WPT tests:
 https://wpt.fyi/results/css/css-flexbox/position-absolute-001.html
 https://wpt.fyi/results/css/css-flexbox/position-absolute-002.html


The issues are all for cases where there's a flex container with a reversed main axis or cross axis (from `flex-direction: row-reverse` or `column-reverse`, or `flex-wrap: wrap-reverse`).

The test asserts that the static position of an abspos child should be at the "end" side of the flex container (the `flex-start` side, since the relevant flex axis is reversed with a `*-reverse` keyword in these cases).

We incorrectly place the abspos child at the `start` side. But we're wrong -- the relevant behavior here is the "normal" behavior (since "normal" is the default `align`/`justify` keyword), and the spec says:

> normal Behavior 	
>    For replaced absolutely-positioned boxes,
>    the 'normal' keyword behaves as 'start'.
>
>    For all other absolutely-positioned boxes, 'normal' behaves as 'stretch'
https://drafts.csswg.org/css-align/#align-abspos

The last line is the relevant one here -- `normal` is supposed to behave as `stretch`, and `stretch` "falls back to flex-start generally", which in this flex-axis-reversed scenario would mean the far/"end" side of the flex container.

Testcase attached -- currently we do the right thing for `flex-start` (the lime rect) but not for `stretch` or for the default behavior (the red and orange rects).

Back to Bug 1543267 Comment 0