- From: Florian Rivoal via GitHub <sysbot+gh@w3.org>
- Date: Tue, 17 Jan 2017 07:27:00 +0000
- To: public-css-archive@w3.org
frivoal has just created a new issue for https://github.com/w3c/csswg-drafts: == [css-flexbox][css-sizing] Using tables in flexbox == https://drafts.csswg.org/css-flexbox-1/#valdef-display-flex https://drafts.csswg.org/css-flexbox-1/#propdef-flex https://drafts.csswg.org/css-flexbox-1/#propdef-flex-wrap https://drafts.csswg.org/css-sizing-3/#valdef-width-fill If you have items in a flex-box, want them be all the same size and flex up and down as long as they don't get smaller than their min-content, and wrap the flexbox otherwise, this is generally very easy: ```css .flex { display: flex; flex-wrap: wrap; } .flex > * { flex: 1; } ``` However, due to the way `width: auto` works on tables, if one of the items is a table, it doesn't work. I believe it's expected (although I am not 100% convinced it is[1]), but if so we need a way to opt into it. As I understand, `width: fill` is meant to do on anything what `width: auto` does on blocks, so this ought to work: ```css .flex { display: flex; flex-wrap: wrap; } .flex > * { flex: 1; } .flex > table { width: fill; } ``` However, in all current browsers that implement `fill` (or a prefixed version of it), it does not. Firefox, Chrome and Safari all do different things, but none fully do what I expect. Here's a little demo: http://output.jsbin.com/diziga/ * In firefox, it takes the full width of the flex container, and wraps. * In Chrome, it takes the full width of the container, but only wraps if there would not have been enough room when doing min-content sizing, causing overflow if there is enough room for min-content sizing. I suppose that this is a bug. * In Safari it takes the full width of the flex container, but safari doesn't seem to be able to wrap when flex-basis is 0, so it overflows in all cases. I suppose that this is a bug. Leaving bugs aside, it seems all browsers agree that `width: fill` should takes the full width of the flex container. Reading the spec, it does not seem to call for the behavior that I expect, but then again the definition is somewhat convoluted, so I may be missing something. Is this a problem with my understanding of what `width:fill` is supposed to do (and if yes, how is this problem supposed to be solved)? Is the spec failing to define `width: fill` the way it should? Are these just bugs in implementations? --- [1] Looking at the jsbin example above, Firefox and Blink/webkit also have a different rendering of the table {width: auto} case, but the difference is smaller. I wonder which one is spec compliant, if any. I'm happy to submit a ref test if someone more familiar with the flex algo can clarify. Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/948 using your GitHub account
Received on Tuesday, 17 January 2017 07:27:07 UTC