- From: Tab Atkins Jr. <jackalmage@gmail.com>
- Date: Mon, 13 Jul 2015 10:37:15 -0700
- To: François REMY <francois.remy.dev@outlook.com>
- Cc: Patrick Brosset <pbrosset@mozilla.com>, CSS WG <www-style@w3.org>
On Mon, Jul 13, 2015 at 10:09 AM, François REMY <francois.remy.dev@outlook.com> wrote: > Hi Patrick, > > I’m having a hard time understanding how your usecase would work in an > efficient way, and react properly in edge cases. > > If you want the amount of columns to equate the amount of tabs, you’re > relying on automatic placement, right? Then you cannot possibly have two > rows because the items would be allowed to locate on the second row. > > Well, I guess your answer to this is that they would do but can’t because > the second row is already filled with the item you placed there using “1 / > -1i” (where -1i means the last implicit line). However, you’re forcing a > relayout each time a new item is placed because by increasing the amount of > columns, it changes the placement of positioned grid items and therefore > require a new pass of the positioned-items layout, which will update the > “busy-cells matrix”. Optimizations may be made but could be hard to > implement. Not really, no. Especially if we limited it to only specifying the *last* implicit line (rather than letting you offset arbitrarily from that), then it's easy - the presence of such a grid item implicitly fills the entire rest of the row/column. Without such a restriction it would indeed be unstable, but we could perhaps still reserve the entire row/column even if you don't use it. That would still allow for manual placement of cells overlapping. For example: .sidebar { grid-column: 1; grid-row: 1 / -2 of implicit; } .footer { grid-column: 1 / -1; grid-row: span 1 / -1 of implicit; } This makes a sidebar that runs the entire height of the grid, but leaves the last row empty, and then puts a footer into the last row. If the footer weren't there, we'd still prevent auto-flow from putting anything into the first row, for sanity/stability reasons. > What’s preventing you, in this case, to use a two-rows grid whose first row > is a <nav> element containing the tabs (which could be a flex-box). Using a > flexbox may allow line-wrapping once dividing into columns cannot possibly > work given the content min-size and is therefore much better. Flexbox doesn't allow for alignment and other 2d things. You can often fake simple grids with a multiline flexbox, but it's not a general replacement. Subgrids would make this unnecessary, as you could just put all the auto-flow items into a subgrid (only inheriting the column lines) and then place that appropriately into the parent grid, but subgrids are of uncertain status. ~TJ
Received on Monday, 13 July 2015 17:38:05 UTC