- From: Andrew Fedoniouk <news@terrainformatica.com>
- Date: Sun, 9 May 2010 15:20:23 -0700
- To: "L. David Baron" <dbaron@dbaron.org>
- Cc: <robert@ocallahan.org>, "Tab Atkins Jr." <jackalmage@gmail.com>, "Adam Del Vecchio" <adam.delvecchio@go-techo.com>, <www-style@w3.org>
-------------------------------------------------- From: "L. David Baron" <dbaron@dbaron.org> Sent: Sunday, May 09, 2010 1:58 PM To: "Andrew Fedoniouk" <news@terrainformatica.com> Cc: <robert@ocallahan.org>; "Tab Atkins Jr." <jackalmage@gmail.com>; "Adam Del Vecchio" <adam.delvecchio@go-techo.com>; <www-style@w3.org> Subject: Re: Fw: RE: [css-flexbox] Summary of planned changes to Flexbox Module > On Sunday 2010-05-09 12:48 -0700, Andrew Fedoniouk wrote: >> I think that algorithm used in Gecko has an error or >> if it is correct (that mysterious "additive" to something?) >> then it is highly non-intuitive. > > Flex is an addition to the preferred width, not a replacement for > it. Having it this way is essential for building complex widgets > using flex. For example, suppose you have a widget like the URL bar > in Firefox where one part in the middle is flexible (the part where > you enter the text) but there are a bunch of other parts (favicon, > bookmark and SSL indicators). If you want to use that widget in > something larger where it is, itself, flexible (but say, not the > only flexible thing), you still don't want it to end up smaller than > the sum of the minimum width of its flexible part and the widths of > its nonflexible parts. So you don't want to assign it a width; you > want to say that it has a width to start off, and then it flexes to > fill additional space (because that flex really ends up being > assigned to the one flexible piece inside it). I do not understand what "addition to the preferred width" means. In your document you are mentioning that flex value can make width greater *and smaller* than "preferred width". So it is addition and subtraction. If subtraction is allowed then it is not clear what intrinsic dimension means. As far as I understand value of the 'width' property of child is not participating in calculation of intrinsic width of its container in display:box. That is quite different from traditional [CSS box model] calculations in boxes that use intrinsic widths (e.g. floats and table cells). In any case here is how that Mozilla url-box looks like with flex units: <html> <head> <title>Mozilla URL box</title> <style> div#url-box { flow:horizontal; width:*; /* url box takes as much space as available */ border:1px solid blue; margin-left: 200px; /* emulation of other elementes on the left/right */ margin-right: 100px; } div#url-box > div { height:*; /* span whole height of container*/ border:1px solid red; } div#url-box > .favicon { width:24px; } div#url-box > .url { width:*; min-width:48px; overflow-x: hidden; } div#url-box > .bookmark { width:24px; } div#url-box > .dd-list { width:24px; } </style> </head> <body> <div id="toolbar"> <div id="url-box"> <div class="favicon">1</div> <div class="url">2</div> <div class="bookmark">3</div> <div class="dd-list">4</div> </div> </div> </body> </html> Here http://www.terrainformatica.com/w3/mozilla-url.png is its rendering on different widths of view/window. Key point here is: div#url-box > div.url { width:*; min-width:48px; } So div.url spans whole available width but not less than min-width:48px; (You can try the sample above in htmlayout/bin/browse.exe from http://www.terrainformatica.com/htmlayout/HTMLayoutDemo.zip Windows or Linux/Wine) -- Andrew Fedoniouk. http://terrainformatica.com
Received on Sunday, 9 May 2010 22:20:52 UTC