- From: Ojan Vafai <ojan@chromium.org>
- Date: Fri, 21 Jan 2011 12:11:23 -0800
- To: "Tab Atkins Jr." <jackalmage@gmail.com>
- Cc: www-style list <www-style@w3.org>
- Message-ID: <AANLkTin5AJg1P+LAHBZyUzq426ATc9=Pdu2sKfK4qHoH@mail.gmail.com>
This sounds great to me. I agree that we only need the entire flexbox to be baseline-aligned and having flexible lengths was so much more intuitive. On Fri, Jan 21, 2011 at 11:05 AM, Tab Atkins Jr. <jackalmage@gmail.com>wrote: > I have problems. I keep trying to write my new ED of Flexbox, but > every time I get too far into it, it just starts feeling wrong. > > As well, Daniel's recent confusion (echoed by several others in the > thread) about the role of 'width' and 'flex' and how it's unintuitive > to have 'width' not set the width but rather just set a parameter in > the flexible width computation, makes me pause. > > So. Let's talk. This thread is for blue-sky theorizing (again) about > what the shape of Flexbox should be, in terms of what properties we > use to flex and align boxes. (The other parts of flexbox, like > flex-index and flex-direction, feel uncontroversial, and so don't need > to be discussed further.) I don't like to keep returning to base on > this subject, but I can't spec something that feels wrong. > > Here's the issue. We started with two fairly simple and consistent > proposals: > > The WD defined flexing and positioning mostly in terms of keywords, > with only one property ('box-flex') offering more fine-grained > control. This had the benefit of being simple and easy. The downside > was that it missed several use-cases; in particular, you couldn't put > flexbox children into groups with flexible space between them without > junk elements in the DOM (XUL solves this with the presentational > <spacer> element), and you couldn't align the contents of a > box-align:stretch flexbox child. > > My original draft defined flexing and positioning entirely in terms of > flex units. Widths, heights, paddings, and margins could all have > their lengths specified as flex units, and there was a relatively > simple algorithm for distributing free space between them (just a > generalization of the free-space algorithm in the WD for dealing with > flexible widths/heights). This had the benefit of being simple and > uniform, but also missed an important use-case - you couldn't do > baseline alignment of the flexbox children using flex units. > > I tried to reconcile these two things by taking the WD and expanding > what can create flexible lengths, so that auto margins were flexible, > and, depending on what day you asked me, padding could be made > flexible as well. This approach plugs all the use-case holes, but it > ruins the common case, as the flex model is now complex and > non-uniform. As well, there is still the criticism that having the > widths of boxes specified across two properties, with 'width' being > the subordinate one, is unintuitive. > > I think I can recover this by instead starting from the other side, my > initial draft, and moving forward from there. > > As far as I can tell, the use-cases for baseline alignment only > require the entire flexbox to be baseline-aligned; that is, there's no > need to have individual control over which are baseline aligned and > which are doing something else. Given this constraint, I think I can > solve this easily by just having a separate alignment model (triggered > by a property) which treats flexible lengths differently to > intuitively baseline-align the flexbox children. Otherwise, though, > flexing and positioning are done purely through flexible lengths > specified in the normal properties, like my initial draft. > > I'm going to go ahead and start writing this to see if it still feels > right when I get into the details. I'd appreciate feedback, or > suggestions on other ways to do this. > > ~TJ > >
Received on Friday, 21 January 2011 20:12:14 UTC