はじめに
前回の記事では、floatプロパティを使った段組みレイアウトを紹介しました。これは複数のボックスをfloatプロパティで横並びに配置し、段組みレイアウトを実現するものでした。今回紹介する方法は、CSS3のマルチカラムレイアウト(Multi-column Layout)機能を利用して、1つのボックス内に複数の段組みを生成するものです。floatレイアウトのように、段を区切るためのマークアップを追加したり、段の高さを意識したりする必要がなく、簡単に段組みレイアウトを実現できます。特にコンテンツの内容がどのくらいの分量になるのかわからない場合など、長い文章を段に流し込みたい時に大変便利です。
対象読者
- (X)HTMLとCSSの基本を理解している方
- デザインのコツを学びたい方
必要な環境
本連載で動作確認を行ったブラウザは次のとおりです。
- Windows 7 Internet Explorer 11(以下IE 11)
- Windows 7 Firefox 33
- Windows 7 Chrome 38
マルチカラムによる段組みレイアウト
CSS3で追加されたマルチカラムレイアウトの機能を利用すると、ボックス内のコンテンツを簡単に段組みで表示することができます。段組みをどのように表示するかは、段の数、段の幅などで指定します。
「column-count」で段数を指定する
次のサンプルは、見出しと文章で構成されたコンテンツをdivで囲んでマークアップしたものです。
<div id="article"> <h1>星の銀貨</h1> <p>むかし、むかし、小さい女の子がありました。この子には、おとうさんもおかあさんもありませんでした。たいへんびんぼうでしたから、しまいには、もう住むにもへやはないし、もうねるにも寝床がないようになって、とうとうおしまいには、からだにつけたもののほかは、手にもったパンひとかけきりで、それもなさけぶかい人がめぐんでくれたものでした。</p> ~中略~ </div>
まだマルチカラムレイアウトを利用していない状態なので1段組みのレイアウトです。ここに、薄い黄色(#ffc)の背景色を指定し、周りに20pxのパディングと1.5倍の行間を指定しました。
div#article { background-color: #ffc; padding: 20px; line-height: 1.5em; }
読みやすくなるよう行間を開けてはいますが、1段組みでこの行の長さだと、やはり読みにくくなります。このような長文テキストを流し込む場合は、幅を半分にし、2段組みにすることで可読性が上がります。
段組みの数は、column-countプロパティを使って指定します。ここでは「column-count:2;」を指定して、コンテンツを2段組みにしました。
なお、マルチカラム関連のプロパティは、現時点ではベンダープレフィックスを付けて指定する必要があります。次のように、Firefox向けに「-moz-」、Google ChromeやSafari向けに「-webkit-」を付けて指定しましょう。
div#article { ~略~ -moz-column-count: 2; /* Firefox向け */ -webkit-column-count: 2; /* Chrome, Safari向け */ column-count: 2; }
たったこれだけの指定で2段組みレイアウトを実現できます。
このとき、コンテンツは各段が同じくらいの高さになるよう自動的に分割されます。floatレイアウトでは、各段組みの背景色の高さを揃えるのに一工夫必要でしたが、マルチカラム機能を利用したレイアウトでは背景の高さを意識する必要はありません。
column-countで指定した場合、描画領域の幅が変わっても常に段の数は同じです。リキッドレイアウトにも簡単に取り入れることができて便利です。