W3C home > Mailing lists > Public > www-style@w3.org > June 2011

Re: [css3-flexbox] getting multiline flexbox back into the spec

From: Tab Atkins Jr. <jackalmage@gmail.com>
Date: Thu, 2 Jun 2011 22:01:22 -0700
Message-ID: <BANLkTik8CAG+EsnCr4mjp32sP06Ux4JxqA@mail.gmail.com>
To: Alex Mogilevsky <alexmog@microsoft.com>
Cc: W3C style mailing list <www-style@w3.org>
On Thu, Jun 2, 2011 at 1:49 AM, Alex Mogilevsky <alexmog@microsoft.com> wrote:
> I'm looking at what it will take to add multiline flexbox back into new syntax. There are three things that will need to be controlled then:
>
>        1) mutliline  on/off
>        2) line stacking direction
>        3) line packing mode
>
> Additional properties could be like this:
>
>    Name:           flex-lines
>    Value:          single | multiple | inherit
>    Initial:        single
>    Applies to:     flexboxes
>    Inherited:      no
>    Percentages:    no
>    Media:          visual
>    Computed value: specified value
>
> This is more or less obvious. Naming could be different but it has to be a property, and it has to have two values. That is unless it is another value for 'display' but I don't think we'd want that.
>
>    Name:           flex-line-progression
>    Value:          normal | reverse | inherit
>    Initial:        normal
>    Applies to:     flexboxes
>    Inherited:      no
>    Percentages:    no
>    Media:          visual
>    Computed value: specified value
>
> Not sure what you'll want to do here. You can update 'flex-direction' to have values like 'lr-tb', but then it is no longer a 'direction' (as 'ltr' is a 'direction' but 'lr-tb' is a 'writing-mode').
>
> If this stays a separate property, it could be "flex-line-flow: lr | rl | tb | bt", but then it collides with "flex-direction" values.
>
> I think the best way would be to go back to separate properties for "flex-direction" and "flex-orientation", and if you want a compact layout you can have a shorthand property "flex-flow: lr-tb | tb-lr | ... all values in writing-mode ...":
>
>        Flex-orientation: horizontal | vertical | inline-axis | block-axis
>        Flex-direction: normal | reverse
>        Flex-lines-direction: normal | reverse
>
> Also, the shorthand property could be a space separated list as other shorthands: "flex-flow:horizontal reverse" (this can only work if values for 'flex-lines-direction' are different)

Based on discussion this morning, perhaps something like this:

flex-direction: lr | rl | tb | bt | lr-tb | lr-bt | rl-tb | rl-bt |
tb-lr | tb-rl | bt-lr | bt-rl | <the inline variants of these>

The single-direction values imply single-line, while the two-direction
values imply multiline.  Presumably the inline variants would be "ba |
ab | se | es | ..."?


>    Name:           flex-line-pack
>    Value:          before | after | middle | justify | inherit
>    Initial:        before
>    Applies to:     flexboxes
>    Inherited:      no
>    Percentages:    no
>    Media:          visual
>    Computed value: specified value
>
> My current implementation maps 'box-align' to one of these values:
>
>        before   -->  before
>        after    -->  after
>        middle   -->  middle
>        baseline -->  middle
>        stretch  -->  justify
>
> which works in some common cases but generally seems wrong.
>
> What do you think?

Can you explain the exact behavior of line-packing?  What's the height
of a line?  And what's the behavior of percentage width/heights on
flexbox items in the line-stacking direction in a multiline flexbox?

~TJ
Received on Friday, 3 June 2011 05:02:09 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 17:20:41 GMT