- From: Tab Atkins Jr. <jackalmage@gmail.com>
- Date: Wed, 1 May 2013 13:08:01 -0700
- To: Daniel Holbert <dholbert@mozilla.com>
- Cc: www-style <www-style@w3.org>
On Tue, Apr 23, 2013 at 2:59 PM, Daniel Holbert <dholbert@mozilla.com> wrote:
> tl;dr: When a UA paginates (fragments) a "column-reverse" flex
> container, should the first flex item end up at the bottom of the *last*
> page or the bottom of the *first* page?
>
> EXAMPLE:
>
> Consider this HTML markup:
> <div style="display: flex; flex-direction: column-reverse">
> <div>A</div>
> <div>B</div>
> <div>C</div>
> <div>D</div>
> <div>E</div>
> </div>
>
> So, the on-screen rendering looks like this:
> +-------+
> | E |
> | D |
> | C |
> | B |
> | A |
> +-------+
>
> QUESTION: If we paginate this content, where should the first flex-item
> ("A") appear, when printed?
>
> Option 1: first item goes at the bottom of the *last* page:
> Pg1 Pg2 Pg3
> +---+ +---+ +---+
> | E | | C | | A |
> | D | | B | | |
> +---+ +---+ +---+
>
> Option 2: first item goes at the bottom of the *first* page:
> Pg1 Pg2 Pg3
> +---+ +---+ +---+
> | B | | D | | E |
> | A | | C | | |
> +---+ +---+ +---+
>
> Right now Chrome implements Option 1. However, I think I prefer Option
> 2, and I also believe the spec's sample fragmentation algorithm yields
> Option 2 (if you read the heading "Single-line column flex container" to
> include both column and column-reverse, which is reasonable IMHO given
> that there's no sample algorithm at all provided for column-reverse.)
>
> In particular, the spec's sample algorithm for "Single-line column flex
> container" says:
> # 2. Lay out as many consecutive flex items... as possible...
> # starting from the first, until there is no more room on the
> # page or a forced break is encountered.
> http://dev.w3.org/csswg/css-flexbox/#pagination-algo
>
> So that pretty clearly indicates that the first flex item should end up
> on the first page.
>
> Moreover, Option 2 is very analogous to how multi-line flex containers
> partition their items into flex lines. (The first flex item always ends
> up on the first flex line, regardless of whether we're column or
> column-reverse.)
>
> Thoughts? Perhaps the spec could be clarified on this point? (If there's
> general agreement that Option 2 is reasonable, then maybe we should
> change the sample-algorithm header-text "Single-line column flex
> container" to explicitly mention "column-reverse", and similar for the
> other sample algorithms?)
I agree with you that Option 2 is the better option. The most
compelling argument, I think, is that it's similar to how a multi-line
flexbox would break.
We can try to fix up the text to more explicitly indicate that.
(I think Chrome's behavior is accidental - we just have shitty
page-break handling, is all.)
~TJ
Received on Wednesday, 1 May 2013 20:08:50 UTC