写真ギャラリー(マサリー風)のCSS Grid実装

サイズの異なる写真を敷き詰める非対称ギャラリー。CSS Gridのgrid-row / grid-column spanで実装します。

プレビュー

photo-1
photo-2
photo-3
photo-4
photo-5
photo-6
photo-7
photo-8

HTML

<div class="grid-container">
  <div class="item-1">photo-1</div>
  <div class="item-2">photo-2</div>
  <div class="item-3">photo-3</div>
  <div class="item-4">photo-4</div>
  <div class="item-5">photo-5</div>
  <div class="item-6">photo-6</div>
  <div class="item-7">photo-7</div>
  <div class="item-8">photo-8</div>
</div>

CSS

.grid-container {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-template-rows: repeat(4, 1fr);
  gap: 8px;
  width: 100%;
  height: 500px;
}

.item-1 { grid-area: 1 / 1 / 3 / 3; }
.item-2 { grid-area: 1 / 3 / 2 / 4; }
.item-3 { grid-area: 1 / 4 / 2 / 5; }
.item-4 { grid-area: 2 / 3 / 3 / 5; }
.item-5 { grid-area: 3 / 1 / 5 / 2; }
.item-6 { grid-area: 3 / 2 / 5 / 4; }
.item-7 { grid-area: 3 / 4 / 4 / 5; }
.item-8 { grid-area: 4 / 4 / 5 / 5; }

@media (max-width: 768px) {
  .grid-container {
    grid-template-columns: 1fr;
    grid-template-rows: auto;
    height: auto;
  }
  .grid-container > * {
    grid-area: auto;
  }
}

このレイアウトの解説

CSS Gridは本来masonry(レンガ積み)を完全に再現するものではありませんが、grid-row / grid-column spanを明示的に指定することで、非対称で動きのあるギャラリーを実現できます。本プリセットのように大きい画像を2×2の範囲に、小さい画像を1×1で配置する組み合わせは、視覚的にリズムが生まれる定番パターンです。

どんな場面で使う?

ポートフォリオサイト、フォトブログ、ECの商品ビジュアル訴求など、大小の画像を動きのあるレイアウトで見せたい場合に使います。

自分でカスタマイズしたい方へ

列数・行数・Gap・セルの範囲を自由に変更したい場合は、CSS Grid Generatorでドラッグ操作によりオリジナルのグリッドを作成できます。詳しい使い方は使い方ガイドをご覧ください。

ジェネレーターで自分のグリッドを作る →

他のレイアウトプリセット