{"id":389636,"date":"2025-10-13T08:31:35","date_gmt":"2025-10-13T14:31:35","guid":{"rendered":"https:\/\/css-tricks.com\/?p=389636"},"modified":"2025-12-08T08:19:31","modified_gmt":"2025-12-08T15:19:31","slug":"masonry-watching-a-css-feature-evolve","status":"publish","type":"post","link":"https:\/\/css-tricks.com\/masonry-watching-a-css-feature-evolve\/","title":{"rendered":"Masonry: Watching a CSS Feature Evolve"},"content":{"rendered":"\n
You\u2019ve probably heard the buzz about CSS Masonry<\/a>. You might even be current on the ongoing debate about how it should be built, with two big proposals on the table, one from the Chrome team and one from the WebKit team.<\/p>\n\n\n\n The two competing proposals are interesting in their own right. Chrome posted about its implementation<\/a> a while back, and WebKit followed it up with a detailed post<\/a> stating their position (which evolved out of a third proposal<\/a> from the Technical Architecture Group).<\/p>\n\n\n\n We\u2019ll rehash some of that in this post, but even more interesting to me is that this entire process is an excellent illustration of how the CSS Working Group (CSSWG), browsers, and developers coalesce around standards for CSS features. There are tons of considerations that go into a feature, like technical implementations and backwards compatibility. But it can be a bit political, too.<\/p>\n\n\n\n\n\n\n\n That\u2019s really what I want to do here: look at the CSS Masonry discussions and what they can teach us about the development of new CSS features. What is the CSSWG\u2019s role? What influence do browsers have? What can learn from the way past features evolved?<\/p>\n\n\n A masonry layout is different than, say Flexbox and Grid, stacking unevenly-sized items along a single track that automatically wraps into multiple rows or columns, depending on the direction. It\u2019s called the \u201cPinterest layout\u201d for the obvious reason that it\u2019s the hallmark of Pinterest’s feed.<\/p>\n\n\n\n We could go deeper here, but talking specifically about CSS Masonry isn\u2019t the point. When Masonry entered CSS Working Group discussions, the first prototype actually came from Firefox back in 2019, based on an early draft that integrated masonry behavior directly into Grid.<\/p>\n\n\n\n The Chrome team followed later with a new Meanwhile, the WebKit team has proposed that masonry should be a subset of Grid, rather than its own The debate here really comes down to mental models and how you think about masonry. WebKit sees it as a natural extension of Grid, not a brand-new system. Their thinking is that developers shouldn\u2019t need to learn an entirely new model when most of it already exists in Grid. With This sort of horse-trading isn\u2019t new. Both Flexbox and Grid went through years of competing drafts before becoming the specs we use today. Flexbox, in particular, had a rocky rollout in the early 2010s. Those who were in the trenches at the time likely remember multiple conflicting syntaxes floating around at once<\/a>. The initial release had missing gaps and browsers implemented the features differently, leading to all kinds of things, like proprietary properties, experimental releases, and different naming conventions that made the learning curve rather steep, and even Frankenstein-like usage in some cases<\/a> to get the most browser support.<\/p>\n\n\n\n In other words, Flexbox (nor Grid, for that matter) did not enjoyed a seamless release, but we\u2019ve gotten to a place where the browsers implementations are interoperable with one another. That\u2019s a big deal for developers like us who often juggle inconsistent support for various features. Heck, Rob O\u2019Leary recently published the rabbit hole he traveled<\/a> trying to use But I digress. It\u2019s worth noting that Flexbox faced unique challenges early on, and masonry has benefitted from those lessons learned. I reached out to CSSWG member Tab Atkins<\/a>-Bittner<\/a> for a little context since they were heavily involved in editing the Flexbox specification<\/a>.<\/p>\n\n\n\n \u201cFlexbox was the first of the modern layout algorithms; we made a lot of mistakes and missteps while writing it, because we were trying to figure out how a modern layout model should work.\u201d<\/p>\n<\/blockquote>\n\n\n\n In other words, Flexbox was sort of a canary in the coal mine as the CSSWG considered what a modern CSS layout syntax should accomplish. This greatly benefited the work put into defining CSS Grid because a lot of the foundation for things like tracks, intrinsic sizing, and proportions were already tackled. Atkins-Bittner goes on further to explain that the Grid specification process also forced the CSSWG to rethink several of Flexbox\u2019s design choices in the process.<\/p>\n\n\n\n \u201cWe found a lot of decisions that made sense on their own in Flexbox needed to be changed if we wanted them to apply more generally.\u201d<\/p>\n<\/blockquote>\n\n\n\n This also explains why Flexbox underwent several revisions<\/a> following its initial release.<\/p>\n\n\n\n It also highlights another key point: CSS features are<\/strong> always<\/strong> evolving<\/strong>. Early debate and iteration are essential because they reduce the need for big breaking changes. Still, some of the Flexbox mistakes (which do happen<\/a>) became widely adopted. Browsers had widely implemented their approaches and the specification caught up to it while trying to establish a consistent language that helps both user agents and developers implemented and use the features, respectively.<\/p>\n\n\n\n All this to say: Masonry is in a much better spot than Flexbox was at its inception. It benefits from the 15+ years that the CSSWG, browsers, and developers contributed to Flexbox and Grid over that time. The discussions are now less about fixing under-specified details and more about high-level design choices. Hence, novel ideas born from Masonry that combine the features of Flexbox and Grid into the new Item Flow proposal.<\/p>\n\n\n\n It\u2019s messy. And weird. But it\u2019s how things get done.<\/p>\n\n\n Getting to this point requires process. And in CSS, that process runs through the Working Group. The CSS Working Group (CSSWG) runs on consensus: members debate in the open, weigh pros and cons, and push browsers towards common ground.<\/p>\n\n\n\n Miriam Suzanne<\/a>, an invited expert with the CSSWG (and CSS-Tricks alumni<\/a>), describes the process like this:<\/p>\n\n\n\n \u201cThe group runs on a consensus model, so everyone has to eventually come to an agreement \u2014 or at least agree not to block the most popular path forward.\u201d<\/p>\n<\/blockquote>\n\n\n\n But consensus only applies to the specifications.<\/strong> Browsers still decide when and how to those features are shipped, as Suzanne continues:<\/p>\n\n\n\n \u201cBrowsers make their own decisions about how strictly they follow a spec, and sometimes release features that haven\u2019t been fully specified. That can lead to situations where the group decides to change a spec years later to match what browsers actually implemented.\u201d<\/p>\n<\/blockquote>\n\n\n\n So, while the CSSWG facilitates discussions around features, it can\u2019t actually stop browsers from shipping those features, let alone how they\u2019re implemented. It\u2019s a consensus-driven system, but consensus is only about publishing a specification. In practice, momentum can shift if one vendor is the first to ship or prototype a feature.<\/p>\n\n\n\n In most cases, though, the specification adoption process results in a stronger proposal overall. By the time features ship, the idea is that they\u2019ve already been thoroughly debated, which in theory, reduces the need for significant revisions later that could lead to breaking changes. Backwards compatibility is always at the forefront of CSSWG discussions.<\/p>\n\n\n\n Developer feedback also plays an important role, though there isn\u2019t a single standardized way that it is solicited, collected, or used. For the CSSWG, the csswg-drafts GitHub repo<\/a> is the primary source of feedback and discussion, while browsers also run their own surveys and gather input through various other channels such as Chrome\u2019s technical discussion groups<\/a> and Webkit\u2019s mailing lists<\/a>.<\/p>\n\n\n Browsers are in the business of shaping new features. It\u2019s also in their best interest for a number of reasons. Proposing new ideas gives them a seat at the table. Prototyping new features gets developers excited and helps further refine edge cases. Implementing new features (particularly first) gives them a competitive edge in the consumer market.<\/p>\n\n\n\n All that said, prototyping features ahead of consensus is a bit of a tightrope walk.<\/p>\n\n\n\n And that\u2019s where Masonry comes back into the bigger picture. Chrome shipped a prototype of the feature that leans heavily into the first proposal for a new At first glance, that might suggest that Chrome is taking a heavy-handed approach to tip the scales in its favorable direction. But there\u2019s a lot to like about prototyping features because it\u2019s proof in the pudding for real-world uses by allowing developers early access to experiment.<\/p>\n\n\n\n Atkins-Bittner explains it nicely:<\/p>\n\n\n\n \u201cPrototyping before consensus is an important part of building consensus. You get early implementation feedback, you get more eyes on the problem (the implementing engineers rather than just the spec authors).\u201d<\/p>\n<\/blockquote>\n\n\n\n This kind of \u201csoft\u201d commit moves conversations forward while leaving room to change course, if needed, based on real-world use.<\/p>\n\n\n\n But there\u2019s obviously a tension here as well. Browsers may be custodians of web standards and features, but they\u2019re still employed by massive companies that are selling a product at the end of the day. It\u2019s easy to get cynical. And political.<\/p>\n\n\n\n In theory, though, allowing browsers to voluntarily adopt features gives everyone choice: browsers compete in the market based on what they implement, developers gain new features that push the web further, and everyone gets to choose the browser that best fits their browsing needs.<\/p>\n\n\n\n If one company controls access to a huge share of users, however, those choices feel less accessible. Standards often get shaped just as much by market power as by technical merit.<\/p>\n\n\n At the end of the day, standards get shaped by a mix of politics, technical trade-offs, and developer feedback. Consensus is messy, and it\u2019s rarely about one side \u201cwinning.\u201d With masonry, it might look like Google got its way, but in reality the outcome reflects input from both proposals, plus ideas from the wider community.<\/p>\n\n\n\n As of this writing:<\/p>\n\n\n\n This is a big topic, one that goes much deeper and further than we\u2019ve gone here. While working on this article, a few others popped up that are very much worth your time to see the spectrum of ideas and opinions about the CSS standards process:<\/p>\n\n\n\n What can CSS Masonry discussions teach us about the development of new CSS features? What is the CSSWG\u2019s role? What influence do browsers have? What can learn from the way past features evolved?<\/p>\n","protected":false},"author":288700,"featured_media":294740,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"inline_featured_image":false,"c2c_always_allow_admin_comments":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_share_on_mastodon":"1","_share_on_mastodon_status":"The CSS Masonry discussions are a wonderful case study on how CSS features evolve, what \"consensus\" means, and how that relates to things like Baseline availability.\r\n\r\nBig high-fives to @tabatkins@mastodon.social and @mia@front-end.social for helping add clarity on the whole process! \u270b\r\n\r\n%permalink%"},"categories":[4],"tags":[1051,653,686,17036,19080],"class_list":["post-389636","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-articles","tag-browser","tag-csswg","tag-grid","tag-masonry","tag-specifications"],"acf":{"show_toc":"Yes"},"share_on_mastodon":{"url":"https:\/\/mastodon.social\/@csstricks\/115367339444563200","error":""},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2019\/08\/css-tricks-logo-blur.png?fit=1200%2C600&ssl=1","jetpack-related-posts":[{"id":382974,"url":"https:\/\/css-tricks.com\/csswg-minutes-telecon-2024-12-04-just-use-grid-vs-display-masonry\/","url_meta":{"origin":389636,"position":0},"title":"CSSWG Minutes Telecon (2024-12-04): Just Use Grid vs. Display: Masonry","author":"Juan Diego Rodr\u00edguez","date":"December 10, 2024","format":false,"excerpt":"The CSSWG met to try and finally squash a debate that has been going on for five years: whether Masonry should be a part of Grid or a separate system. We've got coverage of both presentations for ya.","rel":"","context":"In "Articles"","block_context":{"text":"Articles","link":"https:\/\/css-tricks.com\/category\/articles\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2019\/12\/css-tricks-logo-gradient-outline.png?fit=1200%2C600&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2019\/12\/css-tricks-logo-gradient-outline.png?fit=1200%2C600&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2019\/12\/css-tricks-logo-gradient-outline.png?fit=1200%2C600&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2019\/12\/css-tricks-logo-gradient-outline.png?fit=1200%2C600&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2019\/12\/css-tricks-logo-gradient-outline.png?fit=1200%2C600&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":381216,"url":"https:\/\/css-tricks.com\/css-masonry-css-grid\/","url_meta":{"origin":389636,"position":1},"title":"CSS Masonry & CSS Grid","author":"Geoff Graham","date":"September 30, 2024","format":false,"excerpt":"An approach for creating masonry layouts in vanilla CSS is one of those \"holy grail\" aspirations. I actually tend to plop masonry and the classic \"Holy Grail\" layout in the same general era of web design. They're different types of layouts, of course, but the Holy Grail was a done\u2026","rel":"","context":"In "Notes"","block_context":{"text":"Notes","link":"https:\/\/css-tricks.com\/category\/notes\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2022\/01\/s_3E9B3376C206E9C2CEB62FA6D09F9BB1394DE2B326458AE4798CB998136CEE84_1640802656094_masonry.png?fit=1200%2C804&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2022\/01\/s_3E9B3376C206E9C2CEB62FA6D09F9BB1394DE2B326458AE4798CB998136CEE84_1640802656094_masonry.png?fit=1200%2C804&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2022\/01\/s_3E9B3376C206E9C2CEB62FA6D09F9BB1394DE2B326458AE4798CB998136CEE84_1640802656094_masonry.png?fit=1200%2C804&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2022\/01\/s_3E9B3376C206E9C2CEB62FA6D09F9BB1394DE2B326458AE4798CB998136CEE84_1640802656094_masonry.png?fit=1200%2C804&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2022\/01\/s_3E9B3376C206E9C2CEB62FA6D09F9BB1394DE2B326458AE4798CB998136CEE84_1640802656094_masonry.png?fit=1200%2C804&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":388632,"url":"https:\/\/css-tricks.com\/quick-hit-54\/","url_meta":{"origin":389636,"position":2},"title":"Quick Hit #54","author":"Geoff Graham","date":"August 8, 2025","format":false,"excerpt":"The WebKit blog is back with a follow-up on its CSS Masonry coverage. It leans into a direction (display: grid), and that direction is different than Chrome's recent prototype (display: masonry).","rel":"","context":"In "Quick Hits"","block_context":{"text":"Quick Hits","link":"https:\/\/css-tricks.com\/category\/quick-hits\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2019\/12\/css-tricks-logo-gradient-outline.png?fit=1200%2C600&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2019\/12\/css-tricks-logo-gradient-outline.png?fit=1200%2C600&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2019\/12\/css-tricks-logo-gradient-outline.png?fit=1200%2C600&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2019\/12\/css-tricks-logo-gradient-outline.png?fit=1200%2C600&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2019\/12\/css-tricks-logo-gradient-outline.png?fit=1200%2C600&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":388275,"url":"https:\/\/css-tricks.com\/quick-hit-52\/","url_meta":{"origin":389636,"position":3},"title":"Quick Hit #52","author":"Geoff Graham","date":"July 23, 2025","format":false,"excerpt":"A CSS Masonry prototype has landed in Chrome and Edge 140. Really leans into the \"Just Use Grid\" camp. I immediately like the masonry shorthand property but gotta wrap my head around item-tolerance.","rel":"","context":"In "Quick Hits"","block_context":{"text":"Quick Hits","link":"https:\/\/css-tricks.com\/category\/quick-hits\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2019\/12\/css-tricks-logo-gradient-outline.png?fit=1200%2C600&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2019\/12\/css-tricks-logo-gradient-outline.png?fit=1200%2C600&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2019\/12\/css-tricks-logo-gradient-outline.png?fit=1200%2C600&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2019\/12\/css-tricks-logo-gradient-outline.png?fit=1200%2C600&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2019\/12\/css-tricks-logo-gradient-outline.png?fit=1200%2C600&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":383675,"url":"https:\/\/css-tricks.com\/quick-hit-33\/","url_meta":{"origin":389636,"position":4},"title":"Quick Hit #33","author":"Juan Diego Rodr\u00edguez","date":"January 11, 2025","format":false,"excerpt":"The Apple team just dropped an interesting idea for masonry layout that I think will make a lot of folks shift their opinion on the debate: #11243","rel":"","context":"In "Quick Hits"","block_context":{"text":"Quick Hits","link":"https:\/\/css-tricks.com\/category\/quick-hits\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2019\/12\/css-tricks-logo-gradient-outline.png?fit=1200%2C600&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2019\/12\/css-tricks-logo-gradient-outline.png?fit=1200%2C600&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2019\/12\/css-tricks-logo-gradient-outline.png?fit=1200%2C600&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2019\/12\/css-tricks-logo-gradient-outline.png?fit=1200%2C600&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2019\/12\/css-tricks-logo-gradient-outline.png?fit=1200%2C600&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":308358,"url":"https:\/\/css-tricks.com\/first-steps-into-a-possible-css-masonry-layout\/","url_meta":{"origin":389636,"position":5},"title":"First Steps into a Possible CSS Masonry Layout","author":"Chris Coyier","date":"May 18, 2020","format":false,"excerpt":"It's not at the level of demand as, say, container queries, but being able to make \"masonry\" layouts in CSS has been a big ask for CSS developers for a long time. Masonry being that kind of layout where unevenly-sized elements are layed out in ragged rows. Sorta like a\u2026","rel":"","context":"In "Articles"","block_context":{"text":"Articles","link":"https:\/\/css-tricks.com\/category\/articles\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2020\/05\/css-masonry.png?fit=1200%2C600&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2020\/05\/css-masonry.png?fit=1200%2C600&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2020\/05\/css-masonry.png?fit=1200%2C600&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2020\/05\/css-masonry.png?fit=1200%2C600&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2020\/05\/css-masonry.png?fit=1200%2C600&ssl=1&resize=1050%2C600 3x"},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/css-tricks.com\/wp-json\/wp\/v2\/posts\/389636","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/css-tricks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/css-tricks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/css-tricks.com\/wp-json\/wp\/v2\/users\/288700"}],"replies":[{"embeddable":true,"href":"https:\/\/css-tricks.com\/wp-json\/wp\/v2\/comments?post=389636"}],"version-history":[{"count":10,"href":"https:\/\/css-tricks.com\/wp-json\/wp\/v2\/posts\/389636\/revisions"}],"predecessor-version":[{"id":390720,"href":"https:\/\/css-tricks.com\/wp-json\/wp\/v2\/posts\/389636\/revisions\/390720"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/css-tricks.com\/wp-json\/wp\/v2\/media\/294740"}],"wp:attachment":[{"href":"https:\/\/css-tricks.com\/wp-json\/wp\/v2\/media?parent=389636"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/css-tricks.com\/wp-json\/wp\/v2\/categories?post=389636"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/css-tricks.com\/wp-json\/wp\/v2\/tags?post=389636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}Masonry Recap<\/h3>\n\n\n

display: masonry<\/code> value, treating it as a distinct layout model. They argued that masonry is a different enough layout from Flexbox and Grid to deserve its own display<\/code> value. Grid\u2019s defaults don\u2019t line up with how masonry works, so why force developers to learn a bunch of extra Grid syntax? Chrome pushed ahead with this idea and prototyped it in Chrome 140<\/a>:<\/p>\n\n\n\n.container {\n display: masonry;\n grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));\n gap: 10px;\n}<\/code><\/pre>\n\n\n\ndisplay<\/code> type. They endorsed a newer direction<\/a> based on a recommendation by the W3C Technical Architecture Group (TAG) built around a concept called Item Flow<\/strong> that unifies flex-flow<\/code> and grid-auto-flow<\/code> into a single set of properties. Instead of writing display: masonry<\/code>, you\u2019d stick with display: grid<\/code> and use a new item-flow<\/code> shorthand to collapse rows or columns into a masonry-style layout:<\/p>\n\n\n\n.container {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(14rem, 1fr));\n item-flow: row collapse; \n gap: 1rem;\n}<\/code><\/pre>\n\n\n\nitem-flow<\/code>, you\u2019re not telling the browser \u201cthis is a whole new layout system,\u201d you\u2019re more or less adjusting the way elements flow in a particular context.<\/p>\n\n\nHow CSS Features Evolve<\/h3>\n\n\n
text-wrap: pretty<\/code><\/a> in his work, and that\u2019s considered \u201cBaseline\u201d support that is \u201cwidely available.\u201d<\/p>\n\n\n\n\n
\n
The CSSWG\u2019s Role<\/h3>\n\n\n
\n
\n
The Bigger Picture<\/h3>\n\n\n
display: masonry<\/code> value. Other browsers have yet to ship competing prototypes, but have openly discussed their positions, as WebKit did in subsequent blog posts<\/a>.<\/p>\n\n\n\n\n
Where We\u2019re At<\/h3>\n\n\n
\n
item-flow<\/strong><\/code> approach.<\/li>\n\n\n\nFurther reading<\/h3>\n\n\n
\n
text-wrap: pretty<\/code>, explaining that \u201cBaseline\u201d doesn\u2019t always mean consistent support in practice.<\/li>\n\n\n\n