
2025/12/20 7:13
CSS Grid Lanes
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Safari Technology Preview 234 は CSS Grid Lanes を導入しました。これは、開発者が JavaScript なしで CSS 内で直接モザイク風グリッドを構築できる新しいレイアウトモードです。
開発者は
と標準の Grid 構文(display: grid-lanes;、grid-template-columnsなど)を組み合わせて柔軟なレーンを作成します。アイテムは自動的に最も近い上部レーンに配置され、無限スクロールとタブフレンドリーなナビゲーションが可能になります。repeat(auto-fill, …)高度な機能 には、レーンサイズの変更(
)、アイテムの跨ぎ(minmax(8rem, 1fr) minmax(16rem, 2fr))、明示的配置(grid-column: span N)および新しいgrid-column: -3 / -1プロパティ(デフォルトはitem-tolerance)が含まれます。これは、サイズ差に基づいてアイテムがレーンをどれだけ積極的にシフトするかを制御します。レーンは列方向(「ウォーターフォール」)または行方向(「レンガレイアウト」)で向きを設定でき、デフォルトの流れは通常です。1em実装は 2022 年中頃に開始され、Safari TP 234 で利用可能です。ライブデモは https://webkit.org/demos/grid3(写真ギャラリー、ニュースレイアウト、博物館サイト、メガメニューフッター)でホストされています。CSS Working Group はまだプロパティ名と向きの構文(
かgrid-lanes-directionの再利用)を最終化中です。その決定が下り次第、この機能は本番環境で使用できるようになります。grid-auto-flow開発者にとって、これは追加の JavaScript を必要とせず、より高速でパフォーマンスの高いレスポンシブレイアウトを実現することを意味し、ブラウザベンダーは同様の機能を採用する可能性があり、将来のウェブデザイン標準に影響を与えるでしょう。
本文
ウェブ上のモザイクレイアウトの未来がやってきました!
Mozilla が基礎を作り、Apple の WebKit チームが数年間努力し、すべてのブラウザと CSS ワーキンググループで何度も議論した結果、動作原理が明らかになりました。
CSS Grid Lanes とは
.container { display: grid-lanes; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 16px; }
Safari Technology Preview 234 で今日からお試しください。
Grid Lanes の仕組み
このクラシックレイアウトを作る手順を詳細に解説します。
まずは HTML:
<main class="container"> <figure><img src="photo-1.jpg"></figure> <figure><img src="photo-2.jpg"></figure> <figure><img src="photo-3.jpg"></figure> <!-- etc --> </main>
display: grid-lanes を <main> 要素に適用すると Grid コンテナが生成されます。grid-template-columns で CSS Grid の力を使って「レーン」を作ります:
.container { display: grid-lanes; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 16px; /* レーンとアイテム間の隙間 */ }
これだけです! メディアクエリやコンテナクエリを使わず、3 行の CSS ですべての画面サイズに対応する柔軟なレイアウトが完成します。
Grid のパワー
レーン幅の変更
狭い列と広い列を交互に作る例:
.container { display: grid-lanes; grid-template-columns: repeat(auto-fill, minmax(8rem, 1fr) minmax(16rem, 2fr)) minmax(8rem, 1fr); }
アイテムの跨ぎ
必要に応じてレーンを跨ぐ:
main { display: grid-lanes; grid-template-columns: repeat(auto-fill, minmax(20ch, 1fr)); gap: 2lh; } article { grid-column: span 1; } @media (1250px < width) { article:nth-child(1) { grid-column: span 4; } article:nth-child(2-8) { grid-column: span 2; } }
明示的配置
列数に関係なくヘッダーを最後の列に置く:
main { display: grid-lanes; grid-template-columns: repeat(auto-fill, minmax(24ch, 1fr)); } header { grid-column: -3 / -1; }
配向の変更
水平方向レイアウト(ウォーターフォール):
.container { display: grid-lanes; grid-template-columns: 1fr 1fr 1fr 1fr; }
垂直方向レイアウト(レンガ型):
container { display: grid-lanes; grid-template-rows: 1fr 1fr 1fr; }
grid-auto-flow の新しいデフォルト値 (normal) は、どちらのテンプレートを定義したかに応じてブラウザが列または行を作るか決めます。
配置感度
item‑tolerance はアイテム配置時にアルゴリズムがどれだけ厳密になるかを制御します。
デフォルト:
1em。値を大きくすると並び替えが減り、低くすると配置が詰まります。
/* 例 */ .item { /* item-tolerance: 0.5em; */ /* 任意で上書き可 */ }
実際に試してみる
webkit.org/demos/grid3 のすべてのデモが新構文に更新され、画像、メガメニュー、フッターなどを網羅しています。
メガメニューフッター例:
.container { display: grid-lanes; grid-template-columns: repeat(auto-fill, minmax(max-content, 24ch)); column-gap: 4lh; }
今後の展望
CSS ワーキンググループはまだいくつか詳細を最終化中ですが、コア機能は準備完了です。
デモを作成し、バグや改善点を共有し、新しいユースケースをぜひ提案してください。
リンク・コメント・アイデアは Bluesky または Mastodon で Jen Simmons に DM してみてください。
私たちは 2022 年中頃からこの機能に取り組み、WebKit への実装と仕様策定を進めています。 CSS Grid Lanes を使って皆さんが作るものを見るのが待ちきれません!