The New Way to Wrap CSS Multi-column layouts in Chrome 145

Chrome 145 just landed, and it finally addresses a UX nightmare we’ve been dodging for years: the forced horizontal scroll in a CSS Multi-column layout. If you’ve ever tried to use column-count on a container with a fixed height, you know the frustration. The content spills out to the right, creating a horizontal scrollbar that feels like a relic from the early 2000s.

As a pragmatic developer, I’ve spent plenty of time talking clients out of “newspaper style” layouts because of this exact bottleneck. We usually ended up refactoring the whole thing into a complex modern CSS layout using Grid or Flexbox, even when the content was a single continuous stream. But Chrome’s latest update changes the math.

The Problem: Horizontal Overflow Debt

Historically, the CSS Multi-column layout was strictly 1D. It filled columns from top to bottom, and if the container ran out of vertical space, it just kept adding columns to the right. Here is the “naive” approach that used to break everything:

.article-container {
  column-count: 3;
  column-gap: 20px;
  height: 400px; /* The trigger for horizontal scroll */
}

When the content exceeds what three 400px columns can hold, Chrome (and every other browser) would simply generate column 4, 5, and 6 to the right. On mobile, this is a total deal-breaker. It forces users to scroll in two directions, which is a massive accessibility fail.

The Fix: column-wrap and column-height

With Chrome 145, we get two new properties that effectively turn multi-column into a 2D flow. Specifically, column-wrap: wrap allows the overflow content to drop to a new “row” below the first set of columns, maintaining vertical scroll behavior.

.modern-article {
  column-count: 3;
  column-wrap: wrap; /* The magic switch */
  height: 400px;
}

By using this, you’re essentially telling the browser: “Fill these three columns. If there’s more, start a new set of three columns below them.” It transforms the layout from a horizontal strip into a vertical block flow.

Real-World Use Cases

I’m particularly excited about “pagination” systems. By setting the column height to 100dvh and using column-wrap: wrap, you can create a fluid, vertical page-flipping experience without a single line of JavaScript. This handles content fragmentation—where a paragraph might split between two pages—natively and gracefully.

However, it isn’t a silver bullet. If your content has unbalanced heights (like a CSS masonry layout might handle better), you can still end up with awkward gaps. Multi-column is still best for continuous text, not necessarily for independent UI cards.

Look, if this CSS Multi-column layout stuff is eating up your dev hours, let me handle it. I’ve been wrestling with WordPress since the 4.x days.

Browser Support: The Catch

As of right now, this is a Chromium-only party. Firefox and Safari haven’t shipped these properties yet. If you’re shipping this to production today, you must use a feature query to ensure you don’t break the layout for non-Chrome users.

@supports (column-wrap: wrap) {
  .article-container {
    column-wrap: wrap;
    height: 400px;
  }
}

This is a major step forward for typography on the web. It brings us closer to the layout flexibility of print design while respecting the vertical-scrolling nature of the modern web. Specifically, it eliminates the need for “hacky” JS calculations to determine when content overflows a container.

author avatar
Ahmad Wael
I'm a WordPress and WooCommerce developer with 15+ years of experience building custom e-commerce solutions and plugins. I specialize in PHP development, following WordPress coding standards to deliver clean, maintainable code. Currently, I'm exploring AI and e-commerce by building multi-agent systems and SaaS products that integrate technologies like Google Gemini API with WordPress platforms, approaching every project with a commitment to performance, security, and exceptional user experience.

Leave a Comment