WINGSプロジェクト 宮本麻矢 [著] 山田 祥寛 [監修] 2015/01/13 14:00
このエントリーをはてなブックマークに追加

サンプルファイル 514.08 KB
1 2 3 4 →

 本連載では、Webページをデザインする際、具体的にどのようにコーディングすれば良いのか分からない人のために、見出しやリスト、フォームなど、Webページを構成する部品のデザインサンプルを紹介し、CSSによるスタイリング方法を解説します。最終回となる今回は、CSS3で追加されたマルチカラムの機能を利用して、段組みレイアウトを簡単に実装する方法を紹介します。

はじめに

 前回の記事では、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で囲んでマークアップしたものです。

リスト1 サンプル1(テキストは青空文庫「星の銀貨」より)/HTML(sample01.html)
<div id="article">
<h1>星の銀貨</h1>
<p>むかし、むかし、小さい女の子がありました。この子には、おとうさんもおかあさんもありませんでした。たいへんびんぼうでしたから、しまいには、もう住むにもへやはないし、もうねるにも寝床がないようになって、とうとうおしまいには、からだにつけたもののほかは、手にもったパンひとかけきりで、それもなさけぶかい人がめぐんでくれたものでした。</p>
~中略~
</div>

 まだマルチカラムレイアウトを利用していない状態なので1段組みのレイアウトです。ここに、薄い黄色(#ffc)の背景色を指定し、周りに20pxのパディングと1.5倍の行間を指定しました。

リスト2 背景色、余白、行間の指定/CSS(sample01.html)
div#article {
  background-color: #ffc;
  padding: 20px;
  line-height: 1.5em;
}
図1 マルチカラムレイアウトの指定をしていない状態の表示
図1 マルチカラムレイアウトの指定をしていない状態の表示

 読みやすくなるよう行間を開けてはいますが、1段組みでこの行の長さだと、やはり読みにくくなります。このような長文テキストを流し込む場合は、幅を半分にし、2段組みにすることで可読性が上がります。

 段組みの数は、column-countプロパティを使って指定します。ここでは「column-count:2;」を指定して、コンテンツを2段組みにしました。

 なお、マルチカラム関連のプロパティは、現時点ではベンダープレフィックスを付けて指定する必要があります。次のように、Firefox向けに「-moz-」、Google ChromeやSafari向けに「-webkit-」を付けて指定しましょう。

リスト3 column-countで段数を指定/CSS(sample01.html)
div#article {
  ~略~
  -moz-column-count: 2; /* Firefox向け */
  -webkit-column-count: 2; /* Chrome, Safari向け */
  column-count: 2;
}

 たったこれだけの指定で2段組みレイアウトを実現できます。

図2 column-count:2; を指定した時の表示。2段組みレイアウトになる
図2 column-count:2; を指定した時の表示。2段組みレイアウトになる

 このとき、コンテンツは各段が同じくらいの高さになるよう自動的に分割されます。floatレイアウトでは、各段組みの背景色の高さを揃えるのに一工夫必要でしたが、マルチカラム機能を利用したレイアウトでは背景の高さを意識する必要はありません。

図3 背景色の高さが自動的に揃う
図3 背景色の高さが自動的に揃う

 column-countで指定した場合、描画領域の幅が変わっても常に段の数は同じです。リキッドレイアウトにも簡単に取り入れることができて便利です。

図4 左:ウィンドウ幅を狭めた時。右:ウィンドウ幅を広げた時。幅が変化しても常に同じ段数
図4 左:ウィンドウ幅を狭めた時。右:ウィンドウ幅を広げた時。幅が変化しても常に同じ段数

1 2 3 4
→
INDEX
デザインサンンプルで学ぶCSSによるスタイリング~「テキスト(マルチカラム)」編
Page1
はじめに
対象読者
必要な環境
マルチカラムによる段組みレイアウト
マルチカラムの間隔と区切り線
マルチカラムレイアウトサンプル
まとめ
参考資料
こちらの関連記事もおすすめです

プロフィール
WINGSプロジェクト 宮本麻矢 ミヤモト マヤ

WINGSプロジェクトについて>
有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2012年2月時点での登録メンバは37名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。


プロフィール
山田 祥寛 ヤマダ ヨシヒロ

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。
主な著書に「入門シリーズ(サーバサイドAjax/XMLDB/PEAR/Smarty)」「独習シリーズ(ASP.NET/PHP)」「10日でおぼえる入門教室シリーズ(ASP.NET/PHP/Jakarta/JSP&サーブレット/XML)」「Pocket詳解辞典シリーズ(ASP.NET/PHP/Perl&CGI)」「今日からつかえるシリーズ(PHP/JSP&サーブレット/XML/ASP)」「書き込み式 SQLのドリル」他、著書多数


記事へのコメント・トラックバック機能は2011年6月に廃止させていただきました。記事に対する反響はTwitterやFacebook、ソーシャルブックマークサービスのコメントなどでぜひお寄せください。