column-countで、隙間なく詰めるレイアウトを実装

column-countの利用方法について解説します。column-countを利用すると、高さの異なるボックスを隙間なく詰めるレイアウトを簡単に実装できます。途中で途切れないようにする方法も紹介します。

目次

実現するレイアウト

さっそく、実現するレイアウトを確認します。

See the Pen column-count by waku-waku (@raku-raku) on CodePen.

手順

下記、HTMLのレイアウトを調整していきます。

<div class="wrap">
  <div style="height: 20px">1</div>
  <div style="height: 20px">2</div>
  <div style="height: 80px">3</div>
  <div style="height: 70px">4</div>
  <div style="height: 20px">5</div>
</div>

column-countでカラム数を設定

column-countで何カラムに分割するか設定します。
親クラスに対して設定します。

.wrap {
  column-count: 2;
}

途中で段落移動しないようにする

先に示したレイアウトでは、2のときに同一要素が途切れた状態で段落移動が行われています。
途切れないようにするには、以下スタイルを追加で設定します。

.wrap div {
  page-break-inside: avoid;
  break-inside: avoid;
}
よかったらシェアしてね!
目次