3/4. float: && ? && [ next ?? ]
(Intentional that you have to specify a particular or subsequent fragment to use this grammar clause.)
must be positive.
3.1: float: top left 2;
3.2: float: block-start page 2; /* float to the top of the 2nd page */
Allow %s for the fragment-locator?
For long doc, allows to say "put this about halfway through",
regardless of how it actually fragments on a given screen.
Maybe just source-location + "next" is enough.
Need to define what to do if there isn't a given fragment.
Layout
The float-origin changes the float's CB.
* What happens if there's a BFC boundary between the float's anchor and the desired float-origin?
Floats shouldn't cross BFC boundaries.
Require reparenting?
Talk to implementors about this, as it'll be unpopular.
Resolving conflicts: resolve floats outside-in?
Start at page level, then work inward to find positions of things.
Clearing
Def need the 8 cardinal values matching float-position
'both' for left+right
for all positions in that origin
If you can't clear, then what?
stay in-flow (ignore 'float')
ignore 'clear', just float as normal.
disappear
move to another specified position
float: top right;
clear: top left / top right, top right / bottom right, bottom right / bottom left, bottom left / discard;
clear: [ / ? ]#
shift (default): shifts below stuff in clear-position (or above for bottom floats)
discard
unfloat
unclear
next ? / [ unfloat | unclear | discard ]? (default is unfloat) (triggers if there's no next fragment to go to)
If you can clear, where to move to?
clear: left/right/both move you down
page/column floats move to next fragmentainer (or if they're a top float, maybe they want to move to bottom float)
clear: top / bottom, bottom / next top;
/* gives alternating top/bottom behavior, because we re-evaluate 'clear' when moving to another fragment */