You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[css-grid-3] Should there be an inline-grid-lanes legacy keyword for display? #10961
As per title; I haven't seen examples of display: inline masonry. I also think should ensure to include the legacy inline-masonry keyword if we're using display.
So I'm not convinced that we need inline-masonry, authors can just use inline masonry instead.
We should add it as a convenience (there isn't any reason not to). E.g. most developers will use just inline-grid and not inline grid, and would be unnecessarily surprised if inline-masonry isn't supported. We shouldn't make this more difficult unnecessarily.
list-item is special and block is assumed; the only legacy variants are inline- prefixed. While
I’m indifferent about adding inline-masonry I was largely pointing it out for completeness otherwise IIRC it would be the only inside display value without an inline legacy variant.
changed the title [-][css-grid-3] if using `display` we should provide examples for `inline masonry`, and include the `inline-masonry` legacy fallback[/-][+][css-grid-3] if using `display` we should provide examples for `inline grid-lanes`, and include the `inline-grid-lanes` legacy fallback[/+]on Jan 2, 2026
is not a good way to help developers understand what's happening.
I understand the desire to push developers into two-value syntax. The two-value syntax is better. But convincing developers to use it needs to come from teaching resources and news that it exists.
Just making display: inline-grid-lanes invalid is only going to confuse people. It's going to make them think Grid Lanes doesn't work as an inline container. That it has to be block.
Authors over implementors over specifiers over theoretical purity.
Reacted by Alison Maher, Ian Kilpatrick, Florian Rivoal, Masataka Yakura and Tab Atkins-Bittner
@jensimmons I fail to see how this argument applies to inline-grid-lanes but not to inline-layout(), inline-list-item, inline-block-list-item, flow-root-list-item, block-math and block-ruby, which we avoided in the past.
changed the title [-][css-grid-3] if using `display` we should provide examples for `inline grid-lanes`, and include the `inline-grid-lanes` legacy fallback[/-][+][css-grid-3] Should there be an `inline-grid-lanes` legacy keyword for `display`?[/+]on Feb 23, 2026
I'm pretty strongly against us being knowingly dishonest in our specifications. And I believe we need to sort out the serialization question here, as it's a pretty integral part of this debate and not really a follow-up issue.
Even with just inline-*, it's not clear if the arguments supporting inline-grid-lanes also apply to inline-list-item, inline-block-list-item and inline-layout().
@Loirooriol So far it's been "all default-block-level inner display type values get inline-* keywords". If we add inline-grid-lanes that keeps the pattern. Not adding inline-grid-lanes creates a fixed, historically-determined set ("legacy"). Neither of these options requires adding all the extra values you're mentioning, that we don't have.
With one engine already shipping this feature and at least one actively being worked on, I'd like to revive this discussion in the hope that we can find a viable solution before it's too late.
Repeating my previous statement:
RESOLVED: remove inline-grid-lanes for now, but we are open to adding it again if there is evidence it solves a problem
This was already a good compromise, in my opinion, which would keep the consistency @fantasai is asking for. And I still didn't read a strong argument against that.
Reading through the comments again, it seems nobody actually gave an proper argument against this first resolution. (Please let me know if I missed it! This thread got quite long...)
As @kizustated earlier, any negative reaction of authors for not introducing a single-keyword value is speculative. And that resolution let the door open for introducing it if there's request for it.
@Loirooriol So far it's been "all default-block-level inner display type values get inline-* keywords". If we add inline-grid-lanes that keeps the pattern.
This hasn't been written down anywhere before, has it? At least I couldn't find any resource using this definition as a reason for having the inline-* keywords.
Not adding inline-grid-lanes creates a fixed, historically-determined set ("legacy").
The spec and different resources explaining the two-value syntax like MDNalready outline the inline-* keywords as "legacy". The resolution I objected to asking to "remove [the] indication that inline- syntaxes are legacy or otherwise inferior" not only targets the spec but also those resources.
I'm pretty strongly against us being knowingly dishonest in our specifications.
What are you actually referring to here?
And I believe we need to sort out the serialization question here, as it's a pretty integral part of this debate and not really a follow-up issue.
Any chance we can avoid using the 'legacy' option for serialization?
I don't think serialization is such a big deal. Though if we want to keep advocating for the two-value syntax, I think it should serialize as two values even if we introduce the single-keyword variant.
In any case, it should be consistent for inline grid-lanes and inline-grid-lanes.
So, let's bring this to the agenda again with the main questions being:
I've been teaching the multi-value syntax for years, and authors find it useful for understanding the various things display is doing. But it won't see broad teaching & adoption until there is functionality that relies on it. Authors don't get a lot of training in CSS, they mostly read how-to articles about things they are trying to achieve. If we're not willing to put any features entirely in the new syntax, it will remain a useful curiosity that only some developers encounter.
I think the most attractive way to put functionality behind the multi-value syntax is with longhands — especially the much-needed display-visibility (name TBD) #12046 mentioned by @benface earlier.
I also think authors are entirely capable of learning that inline grid-lanes is the proper syntax, if we stick to the original resolution. And when they ask why, they will discover the multi-value syntax – and that it is broadly available. That's good for everyone.
To me, continuing with two syntaxes only increases an inconsistency of the language. We're dragging out the point of confusion, rather than making a clean break. Deprecating the old syntax makes things more consistent and learnable than trying to keep both syntaxes alive just in case someone tries the old one for a new feature.
(but I did and do not feel strongly enough to object)
@fantasai@jensimmons@bfgeek I think you were the ones with the strongest opinion for introducing the single-keyword value.
Could you please provide some feedback to my previous comment, especially regarding the three questions at the end, so we can make progress on this issue and hopefully find a solution acceptable for everyone?
Activity
Loirooriol commentedon Sep 27, 2024
We didn't add a legacy
inline-list-item(dropped in #1495),block-rubynorblock-math(#5385), you need to provide 2 keywords for these combinations.So I'm not convinced that we need
inline-masonry, authors can just useinline masonryinstead.bfgeek commentedon Sep 27, 2024
We should add it as a convenience (there isn't any reason not to). E.g. most developers will use just
inline-gridand notinline grid, and would be unnecessarily surprised ifinline-masonryisn't supported. We shouldn't make this more difficult unnecessarily.Ian
keithamus commentedon Sep 27, 2024
list-itemis special andblockis assumed; the only legacy variants areinline-prefixed. WhileI’m indifferent about adding
inline-masonryI was largely pointing it out for completeness otherwise IIRC it would be the only inside display value without an inline legacy variant.Loirooriol commentedon Sep 27, 2024
We shouldn't call these "legacy" if we are going to keep adding them whenever we add new inside display types.
Loirooriol commentedon Nov 11, 2024
Actually not, Houdini Layout adds
layout()but notinline-layout().It was removed by Ian in w3c/css-houdini-drafts@60ff1c2
[-][css-grid-3] if using `display` we should provide examples for `inline masonry`, and include the `inline-masonry` legacy fallback[/-][+][css-grid-3] if using `display` we should provide examples for `inline grid-lanes`, and include the `inline-grid-lanes` legacy fallback[/+]Loirooriol commentedon Jan 2, 2026
Renamed since now it's
grid-lanesinstead ofmasonry.Agenda+ to decide whether to add a "legacy"
inline-grid-laneskeyword.SebastianZ commentedon Jan 2, 2026
I've strongly in favor of not introducing a new legacy keyword. That allows to push the awareness of the double-keyword syntax of
display.Sebastian
[css-grid-3] Update CSS-Grid-3 spec to use new grid-lanes syntax
jensimmons commentedon Jan 6, 2026
Making these work:
and making this broken:
is not a good way to help developers understand what's happening.
I understand the desire to push developers into two-value syntax. The two-value syntax is better. But convincing developers to use it needs to come from teaching resources and news that it exists.
Just making
display: inline-grid-lanesinvalid is only going to confuse people. It's going to make them think Grid Lanes doesn't work as an inline container. That it has to be block.Loirooriol commentedon Jan 6, 2026
@jensimmons I fail to see how this argument applies to
inline-grid-lanesbut not toinline-layout(),inline-list-item,inline-block-list-item,flow-root-list-item,block-mathandblock-ruby, which we avoided in the past.64 remaining items
[-][css-grid-3] if using `display` we should provide examples for `inline grid-lanes`, and include the `inline-grid-lanes` legacy fallback[/-][+][css-grid-3] Should there be an `inline-grid-lanes` legacy keyword for `display`?[/+]fantasai commentedon Feb 23, 2026
I'm pretty strongly against us being knowingly dishonest in our specifications. And I believe we need to sort out the serialization question here, as it's a pretty integral part of this debate and not really a follow-up issue.
astearns commentedon Feb 23, 2026
I think “knowingly dishonest” is vastly overstating the case.
fantasai commentedon Feb 23, 2026
@romainmenke No, I think we can reasonably say that the
inline-*pattern is for inner display types only, and there's noblock-*pattern.Loirooriol commentedon Feb 23, 2026
Even with just
inline-*, it's not clear if the arguments supportinginline-grid-lanesalso apply toinline-list-item,inline-block-list-itemandinline-layout().fantasai commentedon Feb 23, 2026
@Loirooriol So far it's been "all default-block-level inner display type values get
inline-*keywords". If we addinline-grid-lanesthat keeps the pattern. Not addinginline-grid-lanescreates a fixed, historically-determined set ("legacy"). Neither of these options requires adding all the extra values you're mentioning, that we don't have.Loirooriol commentedon Feb 23, 2026
layout()is an inner display type that defaults to block-level, so the pattern isn't working.[grid-lanes] Make tests not depend on inline-grid-lanes alias
Bug 2018808 [wpt PR 57972] - [grid-lanes] Make tests not depend on in…
SebastianZ commentedon Sep 7, 2026
With one engine already shipping this feature and at least one actively being worked on, I'd like to revive this discussion in the hope that we can find a viable solution before it's too late.
Repeating my previous statement:
Reading through the comments again, it seems nobody actually gave an proper argument against this first resolution. (Please let me know if I missed it! This thread got quite long...)
As @kizu stated earlier, any negative reaction of authors for not introducing a single-keyword value is speculative. And that resolution let the door open for introducing it if there's request for it.
@fantasai wrote:
This hasn't been written down anywhere before, has it? At least I couldn't find any resource using this definition as a reason for having the
inline-*keywords.The spec and different resources explaining the two-value syntax like MDN already outline the
inline-*keywords as "legacy". The resolution I objected to asking to "remove [the] indication that inline- syntaxes are legacy or otherwise inferior" not only targets the spec but also those resources.What are you actually referring to here?
@mirisuzanne wrote:
I don't think serialization is such a big deal. Though if we want to keep advocating for the two-value syntax, I think it should serialize as two values even if we introduce the single-keyword variant.
In any case, it should be consistent for
inline grid-lanesandinline-grid-lanes.So, let's bring this to the agenda again with the main questions being:
Sebastian
mirisuzanne commentedon Sep 8, 2026
I've been teaching the multi-value syntax for years, and authors find it useful for understanding the various things
displayis doing. But it won't see broad teaching & adoption until there is functionality that relies on it. Authors don't get a lot of training in CSS, they mostly read how-to articles about things they are trying to achieve. If we're not willing to put any features entirely in the new syntax, it will remain a useful curiosity that only some developers encounter.I think the most attractive way to put functionality behind the multi-value syntax is with longhands — especially the much-needed
display-visibility(name TBD) #12046 mentioned by @benface earlier.I also think authors are entirely capable of learning that
inline grid-lanesis the proper syntax, if we stick to the original resolution. And when they ask why, they will discover the multi-value syntax – and that it is broadly available. That's good for everyone.To me, continuing with two syntaxes only increases an inconsistency of the language. We're dragging out the point of confusion, rather than making a clean break. Deprecating the old syntax makes things more consistent and learnable than trying to keep both syntaxes alive just in case someone tries the old one for a new feature.
(but I did and do not feel strongly enough to object)
SebastianZ commentedon Oct 13, 2026
@fantasai @jensimmons @bfgeek I think you were the ones with the strongest opinion for introducing the single-keyword value.
Could you please provide some feedback to my previous comment, especially regarding the three questions at the end, so we can make progress on this issue and hopefully find a solution acceptable for everyone?
Sebastian
Bug 2018808 [wpt PR 57972] - [grid-lanes] Make tests not depend on in…