【CSS】2段組/2カラムレイアウトの作り方

本ページはプロモーションを含みます
この記事は 2017年9月11日 に書いたものです。画面や手順が今と違うことがあります。
- 幅・高さ調整可
- レスポンシブ対応済
- カラム→カラムへの文字連携は考えない(連携させたい場合はColumnを利用)
サンプル
等幅レイアウト
1:2レイアウト
コード
HTML
等幅レイアウト
<div class="myrow"> <div class="col-1" style="margin: 1em;"> シンプルな2カラム/2段組レイアウトです。等幅で表示させています。 </div> <div class="col-1" style="margin: 1em;"> 雑誌で見かけるような形式で、文章をカラム間に連動させたい場合はcolumnがおすすめです。ただ、Webではあまり活用する機会はないかもしれません。 </div> </div>
1:2レイアウト
<div class="myrow"> <div class="col-1" style="margin: 1em;"> 横幅を1:2の比率で表示させてみました。 </div> <section class="col-2" style="margin: 1em;"> ディスプレイサイズが700px以下の場合は、カラムが縦一列に表示されます。デスクトップでご覧の場合は、ウィンドウサイズを変更してみてください。 </div> </div>
CSS
.myrow{display:-webkit-flex;display:flex;}
.mycol-1{flex:1;}
.mycol-2{flex:2;}
.mycol-3{flex:3;}
.mycol-4{flex:4;}
.mycol-5{flex:5;}
.mycol-6{flex:6;}
@media screen and (max-width:700px){
.myrow{-webkit-flex-direction:column;flex-direction:column;}
}
あわせて読みたい解説
Html
まず、Htmlコードのほうですが、どちらのレイアウトも、1つの行(myrow)のなかに2つのカラムを入れています。そして、「等幅」と「1:2」の違いは1か所だけです。2つ目のセクションを「col-1」から「col-2」に変えることで、等幅レイアウトから1:2レイアウトへ変更しています。
CSS
myrowで「FlexBox」を使いますと宣言して、クラス「col-1」~「col-6」は各カラムの比率を定義しています。このデモでは、「col-1」と「col-2」を使って、1:2レイアウトを実現していますが、例えば、「col-3」と「col-4」を使えば、3:4レイアウトを実現できます。最後のMedia Screenはモバイル端末の時に縦一列に表示させるブロックです。
WordPressのショートコードプラグインとの違い
Shortcode Ultimateなどのプラグインを利用しても同じような2段カラムをつくることができます。しかし、1つだけショートコードには問題点があります。それは、ショートコードで挟んだタグ間のテキストがRSSに反映されないということです。SEOの観点からも、文字情報は重要な情報ですので、面倒でもCSSでレイアウトを組んだほうが無難です。
まとめ
FlexBoxはメジャーなブラウザでは一般的に使われるレイアウトです。段組みには他にもfloatやtableといった古典的な手法から、gridlayoutのような先進的な手法まで対応方法はいくつもあります。ただ、シンプルという点ではFlexBoxがベストです。オプションを更に詳細に設計すれば、もっと高度なこともできますので、2段組/2カラムの設計で迷ったら、FlexBoxにしておくといいと思います。
- FlexBox: FlexBox Grid
- Webクリエイターボックスさん: 日本語対応!CSS Flexboxのチートシートを作ったので配布します