CSS columnsマソンリーレイアウト

レイアウト Easy #masonry #columns #css #layout #cards

これは CSS の column-count を使った、いわゆるマソンリー(れんが積み)レイアウトです。高さの違うカードを段組みに流し込むと、空きスペースを詰めながら自然に並ぶため、写真ギャラリーやカードの一覧が整って見えます。

▶ プレビュー

解説

これは CSS の column-count を使った、いわゆるマソンリー(れんが積み)レイアウトです。高さの違うカードを段組みに流し込むと、空きスペースを詰めながら自然に並ぶため、写真ギャラリーやカードの一覧が整って見えます。JavaScript を一切使わず CSS だけで成立しているのが特徴で、軽くて崩れにくい構成です。

仕組みと崩れ防止

親要素に column-count:3column-gap を指定して3列に分け、各カードには break-inside:avoid を付けています。これがないとカードが列の境目で途中分割されてしまうため、見た目を保つ要のプロパティです。画面幅が 540px 以下になると column-count:2 に切り替わり、スマートフォンでも窮屈になりません。

  • 列数を増やしたいときは column-count の数字を変えるだけで対応できます
  • カードの間隔は column-gap と各カードの margin-bottom の両方で調整します
  • 並び順は上から下でなく左の列から順に流れる点に注意し、順序が重要な内容には向きません

使用例・適したシーン

  • ブログ一覧
  • ポートフォリオ
  • ギャラリー

よくある質問

列の数を変えるにはどうしますか
親要素の column-count の値を変えます。3 を 4 にすれば4列になります。スマートフォン向けの列数は、メディアクエリの中にある column-count を別に指定しているので、そちらも合わせて調整してください。
カードが列の途中で切れてしまいます
各カードに break-inside:avoid が付いているか確認してください。このプロパティがないと、カードが列の境界でふたつに分割されて表示が崩れます。付けることで1枚のカードがまとまって配置されます。
追加日:2026-06-02
← すべてのスニペットへ戻る