- From: Andrew Fedoniouk <news@terrainformatica.com>
- Date: Fri, 20 Mar 2009 19:42:56 -0700
- To: David Hyatt <hyatt@apple.com>
- CC: Brad Kemper <brad.kemper@gmail.com>, "Tab Atkins Jr." <jackalmage@gmail.com>, Jonathan Snook <jonathan.snook@gmail.com>, "www-style@w3.org" <www-style@w3.org>
David Hyatt wrote: > On Mar 20, 2009, at 3:36 PM, Andrew Fedoniouk wrote: > >> David Hyatt wrote: >>> On Mar 19, 2009, at 8:41 PM, Brad Kemper wrote: >>> >>>> >>>> >>>> On Thu, Mar 19, 2009 at 5:31 PM, Tab Atkins Jr. >>>> <jackalmage@gmail.com <mailto:jackalmage@gmail.com>> wrote: >>>> >>>> In (b), you say that display:table-cell elements are 'tacked on' to >>>> the structure produced implicitly by table-rows and table-columns. >>>> So, given this markup: >>>> >>>> <style> >>>> body { >>>> display: table; >>>> table-rows: 2; >>>> } >>>> >>>> .cell { >>>> display: table-cell; >>>> } >>>> </style> >>>> <body> >>>> <div ..cell /> >>>> <div .cell /> >>>> </body> >>>> >>>> Would you expect a three-row table, with the first two rows being >>>> anonymous rows created implicitly by the table-rows:2 >>>> declaration, and >>>> the third being an anonymous row generated around the <div .cell> >>>> blocks? >>>> >>>> Oh, I really hope not. I would hope they would flow into the first >>>> row, and that if you wanted something that was only one column wide >>>> that you would put table-columns:1 into the body (thus forcing the >>>> second div into the second row). >>>> >>> >>> It was more a question of whether or not people would want to use >>> table-rows/table-columns and still retain the original grid fitting >>> behavior. For example, table-columns by itself is a convenient >>> shorthand to just avoid declaring some <col> elements. If you use it >>> and not table rows, you haven't necessarily made a grid.... i.e., >>> what about that property has indicated that there should be some kind >>> of intelligent grid fitting? Nothing. That was really my >>> concern.... the idea of fitting isn't really implied by a >>> table-columns property (it probably is somewhat implied by a >>> table-rows property though). >>> >>> Maybe the solution is to just have a single property that represents >>> both... e.g., table-grid. Then the idea that fitting should occur by >>> default might be more natural. >>> >>>> >>>> I like table-position:fit. It keeps us closer to the table model as >>>> it exists now, and puts the burden on wrapping or extending on the >>>> individual cells. Good call. >>>> >>>> I don't really understand that. It seems to be making it more >>>> complicated than necessary. It seems to me that if you put >>>> table-columns:n into the display:table parent element, then that >>>> means you want all the display:table-cell children to conform to a >>>> grid that is n columns wide. If no table-columns number is >>>> specified, and there are no child elements that have >>>> display:table-row set on them, then you will have all your >>>> table-cells in one row, and any other rows you create via >>>> 'table-rows' would have empty cells. >>> >>> I don't really think table-columns by itself necessarily implies >>> this. If I declare <col> elements in my HTML, I haven't implied any >>> intelligent grid fitting behavior, even though they have all the same >>> information as the table-columns property does. If we think >>> specification of rows/cols in CSS should imply this, then I think we >>> should change how the grid is declared. >>> >>>> >>>> >>>> > We pretty much agree, except I want the initial value to be >>>> "the way things work today" and to have a new value for >>>> table-position to get the fitting behavior we all like. >>>> >>>> Cool, and I like the idea of table-position:fit. >>>> >>>> Not me. It seems totally unnecessary. >>>> >>> >>> I agree that I don't really ever see a need to make a grid and then >>> not snap cells to it. The issue is that table-columns by itself >>> doesn't imply that you made a grid. So I think we just need a better >>> way of specifying the grid. >>> >>> dave >>> (hyatt@apple.com <mailto:hyatt@apple.com>) >>> >> <table> works pretty well already for tabular data. >> There is a need for layout managers of different types (grid alike LM >> is just one of them) . >> I do not think that it makes real sense to try to fit all possible >> cases into that display:table. >> >> Consider these four elements: >> >> |--- 100px---|-----------1* ----------| >> |-------2* -----------|------ 1* -----| >> >> where elements replaced into two rows. In each row elements have the >> same height equal to tallest element >> and some elements have flex widths (and heights). There is no way in >> current CSS to define this. At all. >> Neither display:table nor floats will help. >> I mean trying to make display:table to serve other roles than just >> presenting tabular arrangements will >> make display:table overcomplicated and will not be a complete and >> expandable solution anyway. >> > > CSS3 Flexible Boxes can do this (and are implemented in Gecko and > WebKit). I think some of those solutions can be applied to grid layout I assume that "CSS3 Flexible Boxes" means that attempt to marry XUL flexes with CSS? How this will be compatible with flex units needed for say display:table and rest of the CSS? Or this will be a separate mechanism? > as well. But really the way to get different "layout managers" in CSS > is with different values of the display property. In this case (adding > on to table), we aren't defining a new kind of layout system. We're > just extending an existing one. That 'display' property is just "something" to be honest. It tries to combine different things in the same property. For now 'display': 1) defines how element is replaced in respect of its siblings and 2) establish layout manager for the content. These two are different entities. You may wish to say: display: inline[-block]; flow: horizontal[-row]; First one tells how block itself is replaced and second one ('flow' that used to be 'display-model') defines how it will replace its children. We can try of course to add something like inline-table-row to the zoo ... Ideally it should be: flow : table | row | grid | column | columns | h-flow | v-flow | "template" | etc. ; display :inline | block | etc.; In any case display:table-cell is a technical nonsense. table cell is just a 'block' by any means. > > dave > (hyatt@apple.com) > > > -- Andrew Fedoniouk. http://terrainformatica.com
Received on Saturday, 21 March 2009 02:43:41 UTC