@@ -848,11 +848,11 @@ Placement Precision: the 'flow-tolerance' property</h3>
848848 on how that might work.
849849
850850<h3 id="grid-lanes-dense-packing">
851- Dense Placement: the ''item-pack /dense'' keyword</h3>
851+ Dense Placement: the ''grid-auto-flow /dense'' keyword</h3>
852852
853853 In [=grid layout=] , ''grid-auto-flow: dense'' allows backtracking
854854 during the [[css-grid-2#auto-placement-algo|grid item placement algorithm]] .
855- The ''item-pack /dense'' keyword similarly allows backtracking
855+ The ''grid-auto-flow /dense'' keyword similarly allows backtracking
856856 during the [[#grid-lanes-layout-algorithm|grid lanes placement algorithm]] .
857857 However, because item placement and sizing are intertwined in [=grid lanes layout=] ,
858858 an item can only backtrack into a compatible empty slot if
@@ -915,7 +915,7 @@ Grid Lanes Layout and Placement Algorithm</h3>
915915 to overlap previous items.
916916
917917 <li>
918- If the [=grid lanes container=] uses ''item-pack /dense'' packing,
918+ If the [=grid lanes container=] uses ''grid-auto-flow /dense'' packing,
919919 and there exists skipped spaces in the layout
920920 (e.g. due to spanning items)
921921 into which the item, as it is sized now,
@@ -937,7 +937,7 @@ Grid Lanes Layout and Placement Algorithm</h3>
937937 Note: Dense packing both ignores the [=auto-placement cursor=] when backfilling,
938938 and does not update it after placement.
939939 If there aren't any acceptable placement gaps to backfill, though,
940- it places items exactly as when ''item-pack /dense'' were not specified.
940+ it places items exactly as when ''grid-auto-flow /dense'' were not specified.
941941 </ol>
942942
943943 Note: This algorithm chooses the track
@@ -1271,279 +1271,6 @@ Graceful Degradation</h2>
12711271 </figure>
12721272 </div>
12731273
1274- <!-- Big Text: item-*
1275-
1276- ████ █████▌ █████▌ █ █
1277- ▐▌ █▌ █▌ ██ ██ █ █
1278- ▐▌ █▌ █▌ █▌█ █▐█ █ █
1279- ▐▌ █▌ ████ █▌ █ ▐█ ████▌ ███████
1280- ▐▌ █▌ █▌ █▌ ▐█ █ █
1281- ▐▌ █▌ █▌ █▌ ▐█ █ █
1282- ████ █▌ █████▌ █▌ ▐█
1283- -->
1284-
1285- <h2 id="flow-control">
1286- Appendix A: Generic Layout Item Flow Controls: the 'item-*' properties</h2>
1287-
1288- Issue: This section is likely to move to another spec,
1289- such as [[css-display-4]] ,
1290- since it affects multiple display types.
1291- It is also still under discussion as to whether this is a good idea.
1292-
1293- Multiple layout modes in CSS place their children
1294- as atomic "items" organized into rows and/or colummns in their container,
1295- and allow the author to configure their ordering and placement.
1296- The 'item-*' properties provide generic controls for
1297- these ordering and placement options,
1298- encapsulating the layout-specific 'flex-flow' and 'grid-auto-flow' properties.
1299-
1300- <table class=data>
1301- <caption> Overview of Item Flow Controls</caption>
1302- <thead>
1303- <tr>
1304- <th> Flow-oriented Proposal
1305- <th> Track-oriented Proposal
1306- <th> Value Space
1307- <th> Description
1308- <th> Existing flex property
1309- <th> Existing grid property
1310- <tbody>
1311- <tr>
1312- <td> 'item-direction'
1313- <td> 'item-track'
1314- <td> auto | row | column | row-reverse | column-reverse
1315- <td>
1316- Controls whether items are placed into rows or columns,
1317- and whether within those tracks they are ordered
1318- start-to-end or end-to-start.
1319- <td> flex-direction
1320- <td> grid-auto-flow
1321- <tr>
1322- <td> 'item-wrap'
1323- <td> 'item-cross'
1324- <td> [ auto | nowrap | wrap ] || [ normal | reverse ] | wrap-reverse
1325- <td>
1326- Controls whether items are wrapped
1327- in the axis opposite to that controled by the row/column property,
1328- and if so if they are placed in start-to-end or end-to-start order.
1329- <td> flex-wrap
1330- <td> Introduced into 'grid-auto-flow' in this level.
1331- <tr>
1332- <td> 'item-pack'
1333- <td> 'item-pack'
1334- <td> normal | dense || balance
1335- <td>
1336- Configures how items are packed into their tracks.
1337- <td>
1338- <td> 'grid-auto-flow'
1339- <tr>
1340- <td> 'flow-tolerance'
1341- <td> 'flow-tolerance'
1342- <td> normal | <<length-percentage>> | infinite
1343- <td>
1344- Defines a layout-specific amount of “slack” in placement decisions.
1345- <td>
1346- <td>
1347- </table>
1348-
1349- ISSUE(11480): The CSSWG is still figuring out how these properties should be named and fit together.
1350-
1351- <h3 id="item-primary-axis">
1352- Item Flow Axis: 'item-track'/'item-direction'</h3>
1353-
1354- <pre class=propdef>
1355- Name : item-direction, item-track
1356- Value : auto | row | column | row-reverse | column-reverse
1357- Initial : auto
1358- Percentages : N/A
1359- Inherited : no
1360- Applies to : [=flex containers=], [=grid containers=], [=grid lanes containers=]
1361- Computed value : as specified
1362- Animation type : discrete
1363- </pre>
1364-
1365- This property controls whether items are placed as rows or columns,
1366- and whether within those tracks they are ordered
1367- start-to-end or end-to-start.
1368-
1369- ISSUE(11480): There two open debates on this property:
1370- a) what should it be called and
1371- b) does it describe the primary direction of placement,
1372- or the orientation of the tracks into which items are placed;
1373- in other words, is the <dfn>primary axis</dfn> defined by this property
1374- the <dfn>primary placement axis</dfn> or the <dfn>primary track axis</dfn> .
1375- These are identical for [=flex layout=] and [=grid layout=] ,
1376- but differ for [=grid lanes layout=] whose primary placement direction
1377- is across its tracks.
1378- See <a href="https://github.com/w3c/csswg-drafts/issues/12803">latest discussion</a> .
1379-
1380- <dl dfn-type=value dfn-for="item-direction, item-track">
1381- : <dfn>auto</dfn>
1382- ::
1383- Computes to either ''item-direction/row'' or ''item-direction/column''
1384- depending on the layout mode:
1385- * On [=flex containers=] and [=grid containers=] ,
1386- computes to ''item-direction/row'' .
1387- * On [=grid lanes containers=] ,
1388- if 'grid-template-rows' is not ''grid-template-columns/none''
1389- and 'grid-template-columns' is ''grid-template-columns/none'' ,
1390- computes to the value representing row tracks;
1391- otherwise computes to the value representing column tracks.
1392-
1393- : <dfn>row</dfn>
1394- ::
1395- <span class="option masonry"> Track-oriented Option</span>
1396- Represents placement into rows,
1397- i.e. tracks or lines parallel to the [=inline axis=] .
1398- Items fill those rows in start-to-end order.
1399-
1400- <span class="option grid"> Flow-oriented Option</span>
1401- Represents row-primary item placement,
1402- i.e. placing items start-to-end in the [=inline axis=] ,
1403- producing flex row lines in [=flex layout=] ,
1404- and column grid tracks in [=grid lanes layout=] .
1405-
1406- : <dfn>column</dfn>
1407- ::
1408- <span class="option masonry"> Track-oriented Option</span>
1409- Represents placement into columns,
1410- i.e. tracks or lines parallel to the [=block axis=] .
1411- Items fill those columns in start-to-end order.
1412-
1413- <span class="option grid"> Flow-oriented Option</span>
1414- Represents column-primary item placement,
1415- i.e. placing items start-to-end in the [=block axis=] ,
1416- producing flex column lines in [=flex layout=] ,
1417- and row grid tracks in [=grid lanes layout=] .
1418-
1419- : <dfn>row-reverse</dfn>
1420- ::
1421- Same as ''item-direction/row'' ,
1422- but using end-to-start placement order.
1423-
1424- : <dfn>column-reverse</dfn>
1425- ::
1426- Same as ''item-direction/column'' ,
1427- but using end-to-start placement order.
1428- </dl>
1429-
1430-
1431- <h3 id="item-secondary-axis">
1432- Item Cross Axis Placement Mode: 'item-cross'/'item-wrap'</h3>
1433-
1434- <pre class=propdef>
1435- Name : item-wrap, item-cross
1436- Value : [ auto | nowrap | wrap ] || [ normal | reverse ] | wrap-reverse
1437- Initial : auto
1438- Percentages : N/A
1439- Inherited : no
1440- Applies to : [=flex containers=], [=grid containers=], [=grid lanes containers=]
1441- Computed value : as specified
1442- Animation type : discrete
1443- </pre>
1444-
1445- Controls placement in the axis opposite to the [=primary axis=] .
1446-
1447- <dl dfn-type=value dfn-for="item-wrap,item-cross">
1448- : <dfn>auto</dfn>
1449- ::
1450- Computes to ''item-wrap/nowrap'' on [=flex containers=] ,
1451- and ''item-wrap/wrap'' on everything else.
1452-
1453- : <dfn>nowrap</dfn>
1454- ::
1455- Items are placed in the [=primary placement axis=] forever,
1456- even if they run out of room.
1457- In [=flex layout=] this creates a [=single-line flex container=] ;
1458- in [=grid layout=] this creates [=implicit grid track|implicit tracks=] in the [=primary placement axis=] as necessary.
1459-
1460- : <dfn>wrap</dfn>
1461- ::
1462- Items wrap when the [=primary placement axis=] runs out of space.
1463- In [=flex layout=] this creates a [=multi-line flex container=] ;
1464- in [=grid layout=] auto-placement algorithm moves to the next
1465- row/column when it runs out of explicit tracks in the [=primary placement axis=] .
1466-
1467- : <dfn>normal</dfn>
1468- ::
1469- Items are placed in start-to-end order
1470- in the axis opposite to the [=primary track axis=] .
1471-
1472- In [=flex layout=] and [=grid layout=] ,
1473- this controls the direction that new tracks
1474- (flex lines or grid tracks)
1475- are placed in.
1476-
1477- In [=grid lanes layout=] ,
1478- <span class="option masonry"> for track-oriented syntax this controls which track is selected
1479- when several are tied for equal height</span> ;
1480- <span class="option grid"> for flow-oriented syntax this controls which direction
1481- items fill their track in.</span>
1482-
1483- : <dfn>reverse</dfn>
1484- ::
1485- Items are placed in end-to-start order
1486- in the axis opposite to the [=primary track axis=] .
1487-
1488- : <dfn>wrap-reverse</dfn>
1489- ::
1490- Computes to ''wrap reverse'' .
1491-
1492- Note: This value exists for consistency with the existing 'flex-wrap' value.
1493- </dl>
1494-
1495- ISSUE(11480): The interpretation and naming of this property depends on
1496- the interpretation of axes for 'item-direction' /'item-track' .
1497-
1498- <h3 id="item-pack-options">
1499- Item Placement Packing Mode: the 'item-pack' property</h3>
1500-
1501- <pre class=propdef>
1502- Name : item-pack
1503- Value : normal | dense || balance
1504- Initial : normal
1505- Percentages : N/A
1506- Inherited : no
1507- Applies to : [=flex containers=], [=grid containers=], [=grid lanes containers=]
1508- Computed value : as specified
1509- Animation type : discrete
1510- </pre>
1511-
1512- This property controls how items are distributed among the tracks
1513- in a layout-specific way.
1514-
1515- <dl dfn-type=value dfn-for=item-pack>
1516- : <dfn>normal</dfn>
1517- ::
1518- Uses the default packing strategy for the layout mode.
1519-
1520- : <dfn>dense</dfn>
1521- ::
1522- Allows backtracking to place items in earlier spaces that were skipped.
1523- (Such spaces can exist because earlier items were too big for those spaces.)
1524-
1525- For example,
1526- in [=flex layout=] this allows placing items on earlier lines
1527- that still have enough empty space left over.
1528-
1529- : <dfn>balance</dfn>
1530- ::
1531- In [=flex layout=] ,
1532- this value balances the amount of content on each line
1533- (including the last line),
1534- similar to ''text-wrap-style: balance'' .
1535- </dl>
1536-
1537- <h3 id="item-flow">
1538- Item Placement Shorthand: the 'item-flow' shorthand</h3>
1539-
1540- <pre class="propdef shorthand">
1541- Name : item-flow
1542- Value : <<'item-direction'>> || <<'item-wrap'>> || <<'item-pack'>> || <<'flow-tolerance'>>
1543- </pre>
1544-
1545- This [=shorthand property=] sets all its 'item-*' [=longhand properties=]
1546- in a single declaration.
15471274
15481275<h2 id="acknowledgements">
15491276Acknowledgements</h2>
@@ -1586,15 +1313,16 @@ Additions Since Level 2</h3>
15861313 (<a href="https://github.com/w3c/csswg-drafts/issues/9321">Issue 9321</a> ,
15871314 <a href="https://github.com/w3c/csswg-drafts/issues/12899">Issue 12899</a> )
15881315 <li> Introduced the 'flow-tolerance' property.
1589- <li> Introduced the 'item-flow' property and its longhands,
1590- as generic controls for item ordering and placement.
1591- See [[#flow-control]] . Note: This is still under discussion.
1592- (<a href="https://github.com/w3c/csswg-drafts/issues/11480">Issue 11480</a> )
15931316 </ul>
15941317
15951318<h3 class="no-num" id="recent-changes">
15961319Recent Changes</h3>
15971320
1321+ The following changes have been amde since the
1322+ <a href="https://www.w3.org/TR/2026/WD-css-grid-3-20260121/">21 January 2026 Working Draft</a> :
1323+ * Dropped the 'item-*' proposal for unified flow controls across layout modes.
1324+ (<a href="https://github.com/w3c/csswg-drafts/issues/11480">Issue 11480</a> )
1325+
15981326 The following changes have been made since the
15991327 <a href="https://www.w3.org/TR/2025/WD-css-grid-3-20251223/">23 December 2025 Working Draft</a> :
16001328 * Renamed <css> item-tolerance</css> to 'flow-tolerance' .
0 commit comments