> On Nov 14, 2015, at 1:47 AM, Johannes Wilm <johanneswilm@vivliostyle.com> wrote:
>
>> Typically, the horizontal direction comes first, and the vertical one second, when the values represent 2d axes. Given the western-centric preference in CSS (for initial values, etc), this would translate to inline direction first and block direction second.
>>
>>
>> Well, but we need to be able to stack in both directions.
>
> Ah, I think I see the problem. 'Right top' puts it in the top right corner, but doesn't say where to put the next 'right top' float. Underneath, or to the left? Is this the issue?
>
> Yes
>
> I think word order is too subtle to use for that, and is an anti-pattern. You instead need another value, either to add as a third part ('wrap-stack: right top inline', if 'wrap-stack' is the property name for creating float-like positioned exclusions) or in a separate property (wrap-stack-direction: inline).
>
> I think that could work. This is another point we should discuss in December.
>
So I was thinking:
Supposing the main property name is ‘wrap-stack’ instead of ‘float’, and it could take 2 values, one for vertical and one for horizontal (or logical equivalents)…
By default, items moved to the corners would stack in the block direction away from that corner. So, ‘wrap-stack: start start’ would start in the top left corner (if we assume English or other Latin-based written language) and subsequent items with that same value would stack downwards.
This default would be expressed in CSS as an initial value of ‘block’ for a property called ‘wrap-stack-direction’ on the containing block. Then if you wanted to change it, you would do ‘wrap-stack-direction:inline’, and the exclusions would stack in the inline direction away from the corners.
Because the wrap-stack-direction’ is set on the containing block, not the floater (“stacker”?), we would avoid weird stair-step arrangements. All stacking within a page (or other fragmentainer) would be either horizontal or vertical.
Would this also be enough to allow all four corners to have floaters in them, stacking in two directions along the same axis (either up and down, or right and left, but not both)? If one stack would overlap another stack as the stackers are placed in source order, then that stacker that would have caused it is moved to the next fragmentainer.