ギフプロギフプロ

2026年5月、CSSは「ループ」と「塗りつぶしパターン」を手に入れた:Gap Decorations実装の深層

2026年5月、CSSは「ループ」と「塗りつぶしパターン」を手に入れた:Gap Decorations実装の深層

CSS Gap Decorationsが実現する、装飾のパラダイムシフト

2026年5月、web.devの月次アップデートで報告された最大の話題は CSS Gap Decorations の正式サポート開始だ。これは gapcolumn-gaprow-gap で生まれた余白領域に、背景色・画像・ボーダー・グラデーションを直接適用できる仕組み。従来はCSS Gridの隙間に装飾を入れるためだけに、空のdivを挿入したり疑似要素で無理やりマークアップを歪めたりする必要があった。このアップデートにより、そうしたハックから解放される。

なぜ今Gap Decorationsなのか

CSS GridやFlexboxが普及してから、「グリッドの隙間を装飾したい」という要望は常に存在した。特にカレンダーUI、ダッシュボードのカードレイアウト、テーブルライクなデータ表示では、行間や列間に区切り線やハイライトを入れるユースケースが頻発する。従来の手法(outline の重ね合わせ、box-shadow による偽装border)は、余白の制御やレスポンシブ対応で破綻しやすかった。

Chromiumチームは2025年後半にフラグ付きで試験実装を開始し、2026年4月のChrome 126でデフォルト有効化。SafariとFirefoxも追随を表明しており、Baselineとしてのステータスは「Newly available」から「Widely available」への移行段階にある。

具体的なコードと動作の変化

従来のCSS Gridで行間を装飾するには、以下のような手法が使われていた。

.grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
}
/* 各行の下にborderを引くため、子要素すべてにborder-bottom */
.grid > * {
  border-bottom: 1px solid #ccc;
  padding-bottom: 16px;
}

この方法では最終行にもボーダーが付くため、回避のためにクラスやnth-childの調整が必要だった。

Gap Decorationsを使えば、以下の1行で完了する。

.grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
  gap-background: linear-gradient(to right, #f0f0f0, #ccc);
  gap-border: 1px solid #333;
}

gap-background で余白全体にグラデーションや画像を敷き、gap-border でボーダーを引ける。これらは gap 領域の形状に沿って描画されるため、行をまたぐ線や列をまたぐ線を個別に指定できるという利点もある。

実務での落とし穴3つ

1. gapの値が0のときは描画されない
当たり前だが、gap: 0 ではDecorationsが適用されない。レスポンシブでgapを可変にする場合、breakpointごとに適切な値が設定されているか確認が必要。

2. 古いブラウザでのフォールバック
現在のBaselineカバレッジは約78%。@supports (gap-background: linear-gradient(...)) で機能検出し、従来の疑似要素ハックにフォールバックするコードを併記する運用が推奨される。

3. パフォーマンス: 大量描画時の再計算
gridサイズが動的に変わるUI(フィルタリングで行数が増減するテーブルなど)では、gap領域の再計算がレイアウトスラッシングを引き起こす可能性がある。特に gap-background に画像を使う場合は、メモリ使用量と描画コストを事前にテストすべき。

今後の展望: Decorationsの拡張とJavaScriptの役割縮小

CSS-Tricksの “What’s !important #14” では、Gap Decorationsが将来的に gap-border-radiusgap-outline といった派生プロパティへ拡張される可能性が示唆されている。特に gap-border-radius が実装されれば、カレンダーの日付セル間の丸み付き区切り線もCSSだけで表現可能になる。

この変化は、「装飾のためのJavaScript」を減らす大きな一歩だ。これまで、動的なグリッド装飾はJSで各セルの位置を計算してDOM要素を生成するのが一般的だった。CSSだけで完結することで、パフォーマンスが向上し、コードの可読性も上がる。ただし、完全な依存は危険。ブラウザ間の実装差や、複雑な条件分岐(特定の行だけ装飾を変えるなど)は当面CSS単体では難しいため、JSとの共存戦略を設計すべき。

まとめに代えて

「CSSで何ができるか」という問いに、Gap Decorationsは「見た目の装飾」という答えを与えてくれる。実装はまだ始まったばかりだが、2026年後半には主要ブラウザのサポートが揃う見込み。プロジェクトに取り入れるなら、@supports とフォールバックをセットで設計することで、安全かつ将来性のあるコードベースが築ける。

参照

理人と理子

この記事を書いた人

理人と理子

ギフプロのブログを運営している理人(リト)と理子(リコ)です!理は知性を表す漢字でもあるので、AIを連想させる名前にしてもらいました。ブログの内容はAIで作成しているところもありますが、読者の方にとって有意義な情報になるように完全自動化ではなく、人の目も通して作成しています!

ホームヘルプ