- From: Andrew Fedoniouk <news@terrainformatica.com>
- Date: Thu, 2 Aug 2012 23:42:23 -0700
- To: "Tab Atkins Jr." <jackalmage@gmail.com>
- Cc: Jon Rimmer <jon.rimmer@gmail.com>, www-style@w3.org
On Thu, Aug 2, 2012 at 9:34 AM, Tab Atkins Jr. <jackalmage@gmail.com> wrote: > On Thu, Aug 2, 2012 at 12:24 AM, Andrew Fedoniouk > <news@terrainformatica.com> wrote: >> Do you know what is flex value of 'auto' in margin-left:auto ? > > Free space is first given to the 'flex' property, then if there's any > left over, to the 'margin' property, then if there's any left over, to > the 'justify-content' property. So, auto margins aren't comparable to > flex. > >> In other words: what would be computed >> values of margins/width here: >> >> .flex > div { >> margin-left: auto; >> width: auto; /* or shall it be flex-grow:1 ? */ >> margin-right: auto; >> } > > If you change it to "flex-grow: 1" (auto widths don't activate flexing > by themselves), then the width will take up the whole space, and the > margins will be 0. So css3-flexbox demands three "layers" or steps in free space distribution algorithm: 1. Distribute space to things defined by flex-grow. 2. Distribute space left after 1 among margins that have 'auto' value. 3. And finally do distribution defined by alignment. It is not clear why steps 1 and 2 are separated. And again 'auto' gets one more role/sense... This time it will be a synonym of something like secondaryFlex(1). > >> And things like: >> >> margin-left:1*auto; >> margin-right:2*auto; >> >> seem like still not there yet. > > Correct. We may address this in the future; until then, you can use > spacer elements in your markup to achieve arbitrary spacing ratios. > This will require introduction of real flex units. When you will have flex units then it is not clear what you will do with all those flex-*** properties that define flexes for width/height only. Why not to use flex units from very beginning? -- Andrew Fedoniouk. http://terrainformatica.com
Received on Friday, 3 August 2012 06:42:56 UTC