For years, developers who wanted to paginate long-form text into a carousel had only one option: slice the content into individual wrapper elements — one <div> per slide — and glue them together with JavaScript. The browser's native multi-column engine was off-limits because it gave no hook to style the fragments it created.
Chrome 135 changes that. The ::column pseudo-element selects every generated column fragment in a multi-column container and lets authors apply a restricted set of post-layout properties. Post-layout means the browser has already placed the text; the pseudo can only paint or reposition the column boxes, not reflow content into them.
The most important post-layout property is scroll-snap-align. By writing a single rule — .article::column { scroll-snap-align: start } — every generated column becomes a scroll-snap target simultaneously, without a single added wrapper. Combine that with overflow-x: auto; scroll-snap-type: x mandatory on the container and the browser handles the snap math entirely.
Background, padding, border, and box-shadow are also allowed. That means editorial styling — a tinted paper background, a thin column rule, a highlight bar at the top — can all live in a single CSS rule that applies uniformly to however many columns the engine produces.
The constraint is real: layout-affecting properties like width, margin, or font-size are silently ignored. The pseudo can only decorate the box the browser drew; it cannot reshape the box or redirect the flow. Authors who try to set width: 50% on ::column will see no effect — the spec is intentional about this boundary.
Historically, CSS multi-column has been underused on the web precisely because it offered no per-fragment hook. The ::column pseudo removes the biggest blocker, opening the door to pure-CSS carousels, paginated reading views, and print-style layouts that adapt without JavaScript.
Firefox and Safari are tracking the proposal. Until cross-browser support lands, feature detection via CSS.supports('selector(::column)') returns false in non-supporting browsers. A graceful fallback — showing a scrollable column without snap — keeps the content usable everywhere.