CSS アドバンス

CSS3 マルチカラムレイアウト

CSS3 のマルチカラム(Multiple Columns)レイアウトを使用すると、新聞の紙面のようにテキストを複数のカラム(段)に分割して表示させることが可能になります。

1. CSS3 マルチカラムプロパティ

CSS3 では、段組みレイアウトを制御するために以下のプロパティが導入されました。

  • column-count
  • column-gap
  • column-rule-style
  • column-rule-width
  • column-rule-color
  • column-rule
  • column-span
  • column-width

2. CSS3 column-count プロパティ

column-count プロパティは、要素をいくつのカラムに分割するかを指定します。

以下の例では、<div> 要素内のコンテンツを 3 つのカラムに分割します。

div {
  /* コンテンツを3カラムに分割 */
  column-count: 3;
}

3. CSS3 column-gap プロパティ

column-gap プロパティは、カラムとカラムの間の余白(ギャップ)を指定します。

以下の例では、カラム間の余白を 40px に設定します。

div {
  column-count: 3;
  /* カラム間の余白を40pxに設定 */
  column-gap: 40px;
}

4. CSS3 カラム境界線のスタイリング

column-rule プロパティ群を使用すると、カラム間に境界線を引くことができます。これは、通常の border プロパティと同様の感覚で設定可能です。

4.1 column-rule-style

境界線のスタイル(実線、点線など)を指定します。

div {
  column-count: 3;
  column-gap: 40px;
  /* カラム間の境界線を実線に設定 */
  column-rule-style: solid;
}

4.2 column-rule-width

境界線の太さを指定します。

div {
  column-rule-width: 1px;
}

4.3 column-rule-color

境界線の色を指定します。

div {
  column-rule-color: lightblue;
}

4.4 column-rule ショートハンド

上記のプロパティは、column-rule で一括指定することができます。

div {
  /* 太さ、スタイル、色を一括指定 */
  column-rule: 1px solid lightblue;
}

5. CSS3 column-span プロパティ

column-span プロパティは、特定の要素がいくつのカラムをまたいで表示されるかを指定します。

例えば、記事の見出しをすべてのカラムにわたって横断させたい場合に all を指定します。

h2 {
  /* すべてのカラムをまたいで表示 */
  column-span: all;
}

6. CSS3 column-width プロパティ

column-width プロパティは、カラムの最適な幅(推奨される最小幅)を指定します。ブラウザは、この幅を維持しながら、利用可能なスペースに基づいてカラム数を自動的に調整します。

div {
  /* 各カラムの最適な幅を100pxに設定 */
  column-width: 100px;
}

7. マルチカラムプロパティ一覧

プロパティ説明
column-count要素を分割するカラムの数を指定。
column-fillカラムの内容をどのように充填するか(バランス調整など)を指定。
column-gapカラム間の余白を指定。
column-rulecolumn-rule-* プロパティを一括設定するショートハンド。
column-rule-colorカラム間の境界線の色を指定。
column-rule-styleカラム間の境界線のスタイルを指定。
column-rule-widthカラム間の境界線の幅を指定。
column-span要素がまたがるカラムの数を指定。
column-widthカラムの最適な幅を指定。
columnscolumn-widthcolumn-count を一括設定するショートハンド。

マルチカラムレイアウトは、レスポンシブデザインにおいて非常に強力です。画面幅に応じて column-count を動的に変更することで、モバイルでは 1 カラム、デスクトップでは 3 カラムといった新聞風の読みやすいレイアウトを容易に実現できます。