48 messages in org.w3.www-styleRe: Publishing the flexible box model
FromSent OnAttachments
L. David BaronJun 3, 2008 9:48 pm 
Alan GresleyJun 3, 2008 11:56 pm 
L. David BaronJun 4, 2008 12:22 am 
Anne van KesterenJun 4, 2008 1:12 am 
David HyattJun 4, 2008 1:46 pm 
Andrew FedonioukJun 4, 2008 5:50 pm 
L. David BaronJun 4, 2008 6:04 pm 
David HyattJun 4, 2008 6:54 pm 
Andrew FedonioukJun 4, 2008 8:09 pm.h
L. David BaronJun 4, 2008 10:23 pm 
L. David BaronJun 4, 2008 10:48 pm 
Andrew FedonioukJun 4, 2008 11:39 pm 
Andrew FedonioukJun 5, 2008 12:32 am 
Alan GresleyJun 5, 2008 12:34 am 
Robert O'CallahanJun 6, 2008 3:44 am 
fantasaiJun 6, 2008 8:12 am 
Andrew FedonioukJun 6, 2008 9:06 am 
Anne van KesterenJun 6, 2008 9:40 am 
Andrew FedonioukJun 6, 2008 9:54 am 
fantasaiJun 6, 2008 12:41 pm 
Andrew FedonioukJun 6, 2008 1:00 pm 
Robert O'CallahanJun 6, 2008 1:43 pm 
Andrew FedonioukJun 6, 2008 3:48 pm 
Robert O'CallahanJun 7, 2008 2:30 am 
Alan GresleyJun 7, 2008 7:24 am 
Alan GresleyJun 7, 2008 7:48 am 
Brad KemperJun 7, 2008 10:03 am 
Andrew FedonioukJun 7, 2008 1:34 pm 
Andrew FedonioukJun 7, 2008 2:46 pm 
Alan GresleyJun 7, 2008 8:56 pm 
Robert O'CallahanJun 9, 2008 5:48 pm 
Andrew FedonioukJun 9, 2008 7:22 pm 
Robert O'CallahanJun 9, 2008 7:59 pm 
L. David BaronJun 9, 2008 8:29 pm 
Andrew FedonioukJun 9, 2008 9:24 pm 
Andrew FedonioukJun 9, 2008 9:55 pm 
Robert O'CallahanJun 9, 2008 10:04 pm 
Andrew FedonioukJun 10, 2008 12:02 am 
Robert O'CallahanJun 10, 2008 1:46 am 
Alan GresleyJun 10, 2008 2:19 am 
Alan GresleyJun 10, 2008 2:35 am 
Alan GresleyJun 10, 2008 2:50 am 
Andrew FedonioukJun 10, 2008 12:58 pm 
Robert O'CallahanJun 10, 2008 2:34 pm 
Andrew FedonioukJun 10, 2008 4:07 pm 
Andrew FedonioukJun 10, 2008 4:30 pm 
Andrew FedonioukJun 10, 2008 4:39 pm 
Mike WilsonJun 12, 2008 4:46 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Re: Publishing the flexible box modelActions...
From:Andrew Fedoniouk (ne@terrainformatica.com)
Date:Jun 6, 2008 3:48:40 pm
List:org.w3.www-style

Robert O'Callahan wrote:

On Sat, Jun 7, 2008 at 7:41 AM, fantasai <fant@inkedblade.net <mailto:fant@inkedblade.net>> wrote:

I expect you'd keep two values for the margin: the fixed length, and the flex value. Collapsing two margins calc(2* + 100px) and calc(1* + 150px) would give you a collapsed margin of calc(2* + 150px). The 150px is always applied, and the flex value absorbs its quota of additional space when the available space is distributed.

It's more complicated than that because of the rules for negative margin collapsing. You'll actually need at least three values, the min-negative, the max-positive, and the flex.

Negative margins is not a problem either. Negative margin simply increases free space available for flex distribution. At the step of flex computation you will treat them as undefined margin values.

There will also be interesting interactions between flex-units and clearance. <div style="overflow:auto;" class="block-formatting-context"> <div style="height:1*;">Hello</div> <div style="float:left;">Kitty</div> <div style="clear:left;">Kitty</div> </div> Since we don't know the vertical positions until the end, we can't know whether to clear or not. If we treat 1* as auto while we compute clearance, the results are going to be really bad when we apply flex at the end.

As I said floats are not the best friends of flexes. But if flexes and the flow attribute will be implemented you will see a dramatic reduction of floats uses. All cases when floats are used currently for horizontal block layout purposes can be implemented significantly better and more reliable with flexes.

So this particular markup/styling (mix of floats/flexes) you have provided will not be required. You will declare it as:

<div style="overflow:auto;" class="block-formatting-context" style="flow:horizontal-flow"> <div style="height:1*;">Hello</div> <div style="clear:left; height:1*">Kitty</div> <div style="height:1*">Kitty</div> </div>

You should see it as:

| ------------ | | Hello | | ------------ | | Kitty1|Kitty2| | ------------ |

where Hello and Kitty1/2 blocks will have the same height. and Kitty1/2 blocks will fill container width equally (as width:auto == width:1*)

flow:horizontal-flow here is a multiple row layout where . Row breaks happen on blocks with clear:left/right/both. vertical flexes are computed against height of the row.

I'm not saying these difficulties are insurmountable. But I hope it's clear that integrating flex-units into the existing CSS layout specs would create many issues that have to be analyzed and specified. It's not good enough just to wave our hands and say it's all obvious; the issues raised already are not obvious and we've only just scratched the surface.

Opportunities that flexes provide outweigh possible issues significantly. I wish flexes were in CSS from the very beginning. That would simplify spec significantly (in particular all about floats). And yet it will make obsolete that holy-wars about tables used for layout purposes. Flexes give even more than you can do with html tables. As I said in 3 years that we are using flexes we didn't met anything that could not be resolved in boundaries of CSS constraints/ideology.

(It's great that Andrew has an implementation, but it's often easier to implement a feature and say that whatever the implementation does is the desired behaviour, than it is to write a real spec with all the interactions worked out.)

Single implementation is just proves that flexes are feasible. Two implementations prove that there are at least two persons who understand the concept.

So, we need a spec proposal that carefully considers all the possible interactions between flex-units and CSS layout where flex-units can be used, and describes how issues (such as the ones already raised) are resolved.

I agree. The problem is that I am personally is not that good in writing specs. If someone will help me than we can come up with something. In principle it not going to be very complex definition. The whole idea is very simple as it is all about position:static layouts. (There is a desire to be able to define something like { position:fixed; left:1*; ... bottom:1* } to position element in the center of the view but this can be left for the next stage)

http://terrainformatica.com