- From: Robert Koritnik <robert.koritnik@gmail.com>
- Date: Tue, 10 Feb 2015 12:30:02 +0000
- To: www-style@w3.org
- Message-ID: <CABJN8dfYKFmj_+QmnjFc6ycfTYz6FGe26yhkdTohPVZyNpfDzw@mail.gmail.com> (sfid-20150210_123007_476791_15E89769)
Dear sirs. Let me propose a few changes/additions of the flexbox specification. 1. Value change preposition for *flow-direction* property I would like flow-direction values to change from *row* to *horizontal* and *column* to *vertical* because they way they're defined now is rather confusing. Let me give you a simple example. We define flow-direction as *column*. And if we keep other flexbox properties as defaults then we actually end up with *rows of items* that stretch the whole line. If we'd use *vertical* instead of *column* it would be unambiguous in which way items will flow. 2. Additional value for *justify-content* property I'm missing an additional value of *stretch*, to make individual unwrapped set of item fill the whole main-axis width without any space between them. 3. Confusing non-self-explanatory property names I find it hard not to confuse these flexbox related properties *align-content*, *align-items*, *justify-content*. They should have more directly meaningful names, so their usage wouldn't be as confusing as it is at the moment. Maybe they should include words *main*, *cross* and *line* so it would be obvious what they relate to. 4. Add flex groups or add *flex-break* property Suppose we have a flexbox container with several items. It's currently impossible to force a main-axis wrap after a certain item unless we define certain main-axis dimension to items. This is not flexible enough if we want flexbox specification to cover layout design needs. I propose two different solutions: 1. *flex-break* property than can be defined on items and allows following values: - *none* - no wrapping even if item exceeds main axis margin; in this case wrapping should occur either before previous sibling flex item - useful with orphan control so we never end up with a single item at the end - *item*:last-child { flex-break: none; } *item* can be any CSS selector which matches a flex item; defining this selector as *item:last-child::after* would make it possible to create such design elements as *flush-space* effect of which can be seen on this image <http://blog.rockymountaintraining.com/wp-content/uploads/2010/02/2009_shots_0571.jpg> where a fleuron is added to the end of the last paragraph with a flush space in between so fleuron is aligned to the right margin; - *auto* - this is current *default*, where item wraps as required by other properties or main axis dimension - *before* - forced wrap before this item - *after* - forced wrap after this item - *both* - forced wrap before and after, leaving this item as the only one of its main axis set 2. a more complex specification for *flex groups* to group individual flex items as if they'd be wrapped in an additional element; all settings provided on flex container would therefore relate to flex groups defined within and any items not contained in any of the defined flex groups; these flex groups could be generalised and not relate only to flexbox spec, but could be defined as a pseudo element *:wrapper(n)* on container where *n* could be a number or a string name that would be more self-explanatory to developers; defining these wrappers would have to go along with an additional CSS selector property i.e. *wrap-within: n* that would allow developers to add elements of the container to previously defined wrapper pseudo element; this would have to work along with DOM - if only two elements would be added to a certain wrapper all sibling elements between them would therefore be automatically added to it as well; in flexbox specification this would also obey to *order* rules; It would be best to see both added to the CSS specification as they serve a different purpose although when working with flexboxes similar results can be achieved with both. The second one is definitely more flexible. As well as more complex. Kind regards, Robert Koritnik *Pleiado d.o.o.* Developer/consultant on Microsoft platforms and technologies *mobile* +386 41 322 735 *skype* robert.koritnik *twitter* @robertkoritnik <http://twitter.com/robertkoritnik> *google+* Robert Koritnik <https://plus.google.com/116164717430356367649> *linkedin* Robert Koritnik <http://www.linkedin.com/in/robertkoritnik> *blog* Erratic software development <http://erraticdev.blogspot.com>
Received on Wednesday, 11 February 2015 19:53:57 UTC