- From: Andrew Fedoniouk <news@terrainformatica.com>
- Date: Sat, 14 Mar 2009 11:49:13 -0700
- To: David Hyatt <hyatt@apple.com>
- CC: Jonathan Snook <jonathan.snook@gmail.com>, www-style@w3.org
David Hyatt wrote: > On Mar 13, 2009, at 7:51 PM, Andrew Fedoniouk wrote: > >> >> In any case positioning and type of layout management are quite >> different entities - >> layout manager defines the way how elements are being replaced in >> *normal/static* flow. IMO of course. > > Yeah that's true. It does feel like a grid should be a normal flow > entity, and positioning something relative to rows/columns could just be > done using position:absolute still. > > dave > We've got some practical experience in using flow:grid in a year or so and here are some thoughts about it: There are practical cases when you would want to have element replaced in a cell but be position[ed]:relative at the same time - say shifted in 1px from its normal in-grid position. That leads to the requirement: position of the element in a grid - its "cell coordinates" - should not use any attributes or values used by the position: and friends. Second: it is highly desirable for the flow:grid feature to support partial declarations. I mean here following: Consider this markup: <ul #two-columns-list> <li>cell 1.1</li> <li>cell 1.2</li> <li>cell 2.1</li> <li>cell 2.2</li> .... </ul> And the styling: ul#two-columns-list { flow:grid; } ul#two-columns-list > li:nth-child(odd) { left: 1#; // a.k.a. 1gr right: 1#; // elements go to first column } ul#two-columns-list > li:nth-child(even) { left: 2#; right: 2#; // elements go to second column } This setup will replace list items in a grid having two columns. As you see neither number of rows nor cell row positions are specified. flow:grid manager is able to deduce calculated values of top/bottom:auto; values. Currently flow:grid layout uses following rules of resolving 'auto' in left/top/right/bottom of its children: left:auto -> left:1# right:auto -> right: <max-column-no> top:auto -> top: <current-row-no> bottom:auto -> bottom: <current-row-no> That allows to mix 'normal' blocks with 'cells': <div style="flow:grid"> <div .col-1> Cell 1.1 </div><div .col-2> Cell 1.2 </div> <p>Some text here</p> <p>Some other lorem ipsum here</p> <div .col-1> Cell N.2 </div><div .col-2> Cell N.2 </div> </div> with styles: div.col-1 { left:1#; right:1# } div.col-2 { left:2#; right:2# } you will get something like this: | Cell 1.1 | Cell 1.2 | |---------------------| | Some text here | |---------------------| | Some other lorem | | ipsum here | |---------------------| | Cell N.2 | Cell N.2 | -- Andrew Fedoniouk. http://terrainformatica.com
Received on Saturday, 14 March 2009 18:49:51 UTC