cssのcolumns|ボックス内の文章を任意のカラム数に自動で段組みする方法

columnsプロパティトップ画像

 

カラムといえば、「メインコンテンツ」と「サイドバー」など、大きなボックス要素が思い起こされますが、ここで扱うカラムは、1つのボックスの中でテキストなどを折り返す「段組み」のことです。

 

このページでは、CSSで指定すると自動的に「均等な段組み」をレイアウトできる方法について、分かる範囲で解説していきます。

 

 

cssで段組みできる「column-」プロパティ

ボックスの中の要素を段組みするには、cssの「column-」プロパティを利用します。主に利用するのは「column-count」と「column-width」です。

①「column-count」:カラム数を指定
②「column-width」:(最小の)1段の幅を指定
③「columns」:①と②を同時に指定(単独指定も可)

これより先、それぞれのプロパティの具体的な動きを見ていきます。

 

cssの記述例は次のようになります。

CSS記述例


○○○○ {
  column-count: 3;
}
※カラム数:3

○○○○ {
  column-width: 25em;
}
※(最小の)1段の幅:25em

○○○○ {
  columns: 3 25em;
}
※カラム数:3、(最小の)1段の幅:25em

3つ目の「columns」は同時に2つのプロパティ値が指定できます。

「columns」は値を1つにしても大丈夫です。
例えば「columns: 3」は「culumn-count: 3」と同じ意味です。
例えば「columns: 25em」は「culumn-width: 25em」と同じ意味です。

 

2つ同時に指定するとそれぞれのプロパティの動きが理解しにくくなるため、最初は「column-count」か「column-width」のいずれかだけ指定した方が理解しやすいと思います。

 

次にそれぞれのプロパティの具体的な動きを見ていきます。
なおこれより下のサンプル表示は、全て次のHTMLを共通で使用します。

HTML


<div class="○○○○">
  <p>ぼくの家から見える山が現在と同じような形になったのはおよそ5万年程前だといわれています。約30万年前に噴火が始まり、その後噴火が繰り返されたことによって、積もった火山灰や溶岩が次第に山を形成していき、標高1000メートルを越える山に成長していきました。</p>
</div>

 

 

カラム数を指定する「column-count」

「column-count」はカラム数を指定します。

CSS記述例


○○○○ {
  column-count: 5;
}

上のように指定すれば「5つ」に段組みされます。「カラムは5つ、折り返し点はブラウザーにお任せ」というニュアンスです。

 

「column-count」の使用例

実際に「column-count」を指定してみます。

ブラウザ表示(css指定|なし)

ぼくの家から見える山が現在と同じような形になったのはおよそ5万年程前だといわれています。約30万年前に噴火が始まり、その後噴火が繰り返されたことによって、積もった火山灰や溶岩が次第に山を形成していき、標高1000メートルを越える山に成長していきました。

ブラウザ表示(css指定|column-count: 2;)

ぼくの家から見える山が現在と同じような形になったのはおよそ5万年程前だといわれています。約30万年前に噴火が始まり、その後噴火が繰り返されたことによって、積もった火山灰や溶岩が次第に山を形成していき、標高1000メートルを越える山に成長していきました。

ブラウザ表示(css指定|column-count: 4;)

ぼくの家から見える山が現在と同じような形になったのはおよそ5万年程前だといわれています。約30万年前に噴火が始まり、その後噴火が繰り返されたことによって、積もった火山灰や溶岩が次第に山を形成していき、標高1000メートルを越える山に成長していきました。

このように「column-count」を指定するだけで、自動的に1段の「幅」と「高さ」を揃えた位置で折り返してくれます。

 

 

1カラムの幅を指定する「column-width」

「column-width」は1つの段の(最小)幅を指定します。

CSS記述例


○○○○ {
  column-width: 20em;
}

上のように指定すれば「1つの段の幅が(最小)20em」になるよう自動で段組みされます。「幅20em以上で、できるだけ多くの段をつくってね」というニュアンスです。

 

「column-width」の使用例

実際に「column-width」を指定してみます。

ブラウザ表示(css指定|column-width: 20em;)

ぼくの家から見える山が現在と同じような形になったのはおよそ5万年程前だといわれています。約30万年前に噴火が始まり、その後噴火が繰り返されたことによって、積もった火山灰や溶岩が次第に山を形成していき、標高1000メートルを越える山に成長していきました。

ブラウザ表示(css指定|column-width: 15em;)

ぼくの家から見える山が現在と同じような形になったのはおよそ5万年程前だといわれています。約30万年前に噴火が始まり、その後噴火が繰り返されたことによって、積もった火山灰や溶岩が次第に山を形成していき、標高1000メートルを越える山に成長していきました。

ブラウザ表示(css指定|column-width: 10em;)

ぼくの家から見える山が現在と同じような形になったのはおよそ5万年程前だといわれています。約30万年前に噴火が始まり、その後噴火が繰り返されたことによって、積もった火山灰や溶岩が次第に山を形成していき、標高1000メートルを越える山に成長していきました。

 

指定するのは「最小の幅」ですので、仮に「15em」と指定しても、ブラウザーが「この状況なら、22emの2段だね」といった具合に、自動的に1段の「幅」と「高さ」を揃えた位置で折り返してくれます。

 

 

画面幅によるレイアウトの動き

もし段組みを「手動」で行うなら、折り返し位置を決めてから「HTML」の中に記述することになります。

固定レイアウトなら問題ないですが、レスポンシブレイアウトだとデバイス幅によってボックスや文字のサイズが変わります。すると適切な折り返し位置のブレイクポイントが「デバイス幅によって変わる」ので、手動作業は難しくなります。

 

「column-」プロパティは、ブラウザーが「カラム幅と高さ」を自動調整して段組みしてくれます。これはレスポンシブレイアウトを作る上で、とてもうれしい機能です。

 

 

「column-count」を固定し画面幅を変えてみる

次の例では「column-count: 2;」のまま画面幅を変化させてみます。

650pxブラウザ表示(css指定|column-count: 2)

ぼくの家から見える山が現在と同じような形になったのはおよそ5万年程前だといわれています。約30万年前に噴火が始まり、その後噴火が繰り返されたことによって、積もった火山灰や溶岩が次第に山を形成していき、標高1000メートルを越える山に成長していきました。

550pxブラウザ表示(css指定|column-count: 2)

ぼくの家から見える山が現在と同じような形になったのはおよそ5万年程前だといわれています。約30万年前に噴火が始まり、その後噴火が繰り返されたことによって、積もった火山灰や溶岩が次第に山を形成していき、標高1000メートルを越える山に成長していきました。

360pxブラウザ表示(css指定|column-count: 2)

ぼくの家から見える山が現在と同じような形になったのはおよそ5万年程前だといわれています。約30万年前に噴火が始まり、その後噴火が繰り返されたことによって、積もった火山灰や溶岩が次第に山を形成していき、標高1000メートルを越える山に成長していきました。

 

同じテキストの内容でも画面幅によってブレイクポイントが変化し、「高さ」と「幅」のバランスをとってブラウザーが自動段組みしてくれます。

 

 

「column-width」を固定し画面幅を変えてみる

次に「column-width: 15em」のまま画面幅を変えてみます。

650pxブラウザ表示(css指定|column-width: 15em)

ぼくの家から見える山が現在と同じような形になったのはおよそ5万年程前だといわれています。約30万年前に噴火が始まり、その後噴火が繰り返されたことによって、積もった火山灰や溶岩が次第に山を形成していき、標高1000メートルを越える山に成長していきました。

550pxブラウザ表示(css指定|column-width: 15em)

ぼくの家から見える山が現在と同じような形になったのはおよそ5万年程前だといわれています。約30万年前に噴火が始まり、その後噴火が繰り返されたことによって、積もった火山灰や溶岩が次第に山を形成していき、標高1000メートルを越える山に成長していきました。

360pxブラウザ表示(css指定|column-width: 15em)

ぼくの家から見える山が現在と同じような形になったのはおよそ5万年程前だといわれています。約30万年前に噴火が始まり、その後噴火が繰り返されたことによって、積もった火山灰や溶岩が次第に山を形成していき、標高1000メートルを越える山に成長していきました。

 

「column-width」は横幅が変化した時に「最小の幅」をキープしたまま段組みしてくれるので、「これ以上分けられないよ~」という場合には1段のまま表示されます。

 

 

レスポンシブデザインでの「column-」指定

「column-count」と「column-width」のどちらかだけ指定する場合、ボックス幅が可変となるレスポンシブデザインでは「column-width」の方が使いやすいかもしれません。

「column-count」は、大きな画面幅ではちょうどいいカラム数も、小さな画面幅では「細かく分けすぎ」になってしまう場合があります。

CSSのメディアクエリを利用して、デバイス幅に応じた「column-count」を指定する方法もあると思います。ただ、デバイス幅とボックス幅がいつも正比例するとは限りません。

 

こういった悩ましさを解消するには「column-count」と「column-width」を両方指定する方法が有効です。

 

 

「column-count」と「column-width」両方を指定

両方を指定すれば「いいとこ取り」ができます。「columns: 2 11em」を指定してみます。

650pxブラウザ表示(css指定|columns: 2 11em)

ぼくの家から見える山が現在と同じような形になったのはおよそ5万年程前だといわれています。約30万年前に噴火が始まり、その後噴火が繰り返されたことによって、積もった火山灰や溶岩が次第に山を形成していき、標高1000メートルを越える山に成長していきました。

550pxブラウザ表示(css指定|columns: 2 11em)

ぼくの家から見える山が現在と同じような形になったのはおよそ5万年程前だといわれています。約30万年前に噴火が始まり、その後噴火が繰り返されたことによって、積もった火山灰や溶岩が次第に山を形成していき、標高1000メートルを越える山に成長していきました。

360pxブラウザ表示(css指定|columns: 2 11em)

ぼくの家から見える山が現在と同じような形になったのはおよそ5万年程前だといわれています。約30万年前に噴火が始まり、その後噴火が繰り返されたことによって、積もった火山灰や溶岩が次第に山を形成していき、標高1000メートルを越える山に成長していきました。

 

仮に「columns: 2」だけの指定では、360pxで2カラムになります。
仮に「columns: 11em」だけの指定では、650pxで3カラムになります。

それを「columns: 2 11em」と指定することで、「最小の1段の幅は11em」を保ったまま「カラム数は2まで」を保ってくれます。

 

 

 

「column-」の装飾系のプロパティ

「column-」には段組みを装飾するプロパティが用意されていますので、簡単にご紹介します。

 

「column-gap」段と段の間の余白を指定

段の間にできる余白サイズを指定できます。

CSS記述例


○○○○ {
  column-gap: 30px;
}

 

「column-rule」段と段の間に罫線を指定

段の間にできる余白に罫線を引くことができます。borderプロパティなどと同じような指定方法です。

CSS記述例


○○○○ {
  column-rule: 1px solid orange;
}

 

「線の太さ」「線の種類」「線の色」を分けて記述することもできます。

CSS記述例


○○○○ {
  column-rule-width: 1px;
  column-rule-style: solid;
  column-rule-color: orange;
}

 

 

「column-gap」「column-rule」での装飾例

最後に2つの装飾系プロパティを加え、画面幅ごとの表示をしてみます。

CSS


○○○○ {
  columns: 2 11em;
  column-gap: 25px;
  column-rule: 1px dashed yellowgreen;
}

 

650pxブラウザ表示

ぼくの家から見える山が現在と同じような形になったのはおよそ5万年程前だといわれています。約30万年前に噴火が始まり、その後噴火が繰り返されたことによって、積もった火山灰や溶岩が次第に山を形成していき、標高1000メートルを越える山に成長していきました。

550pxブラウザ表示

ぼくの家から見える山が現在と同じような形になったのはおよそ5万年程前だといわれています。約30万年前に噴火が始まり、その後噴火が繰り返されたことによって、積もった火山灰や溶岩が次第に山を形成していき、標高1000メートルを越える山に成長していきました。

360pxブラウザ表示

ぼくの家から見える山が現在と同じような形になったのはおよそ5万年程前だといわれています。約30万年前に噴火が始まり、その後噴火が繰り返されたことによって、積もった火山灰や溶岩が次第に山を形成していき、標高1000メートルを越える山に成長していきました。

 

360pxで1カラムになった時「column-gap」と「column-rule」は効きません。この2つはあくまで「行の間にできる余白」を装飾するプロパティです。

 

 

-CSS, ホームページ作成

投稿日:2018-04-16 更新日:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

ボックスシャドウ・ドロップシャドウ比較アイキャッチ

cssで影をつくる|box-shadow・drop-shadowの使い方と使い分け

  cssで影をおとす「box-shadow」や「filter:drop-shadow」は、何とな~く分かるかな?!くらいの感じでこれまで使ってましたが、影のでき方を色々と試してみる機会があ …

cssで中央配置アイキャッチ画像

cssで縦横(上下左右)中央にテキストを配置|レスポンシブに対応する2つの方法

  横方向の「左右中央」は margin: auto や text-align: center がうまく効いてくれる場面が多いと思います。 ところが縦方向の「上下中央」になると、配置指定が難 …

cssのmargin|上下や親子でマージンが効かない…それはマージンの相殺かもね!

  「マージン」って名前の通りで分っかりやすーい!って思っていたのは昔のこと。いつになっても「あれっ、マージン効かないぞー」って悩むことがあります。   そんな奥深い?マージンです …

縦書きの解説アイキャッチ

htmlとcssで縦書き|自動で段組みし横スクロールを発生させないレイアウト

  ウェブ上で縦書きの文字を見かけると、新鮮というか、目を引くというか、ちょっと印象に残ります。 「あっ いいな」って感じで。   こんなの (ちょっと違う?)  サイトメニュー …