Skip to content

Commit 3515aa8

Browse files
committed
[css-grid-3] Dropped the item-* proposal. #11480
1 parent bf33cc6 commit 3515aa8

File tree

1 file changed

+9
-281
lines changed

1 file changed

+9
-281
lines changed

css-grid-3/Overview.bs

Lines changed: 9 additions & 281 deletions
Original file line numberDiff line numberDiff line change
@@ -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">
15491276
Acknowledgements</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">
15961319
Recent 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

Comments
 (0)