EnjomonWeb

2カラムレイアウトの作り方

カラムレイアウトの画像

今やレスポンシブが常識となり、PC表示では多く取り入れらている2カラムレイアウトの作り方を分かりやすく紹介します。方法はいくつかあるとは思いますが、今回は王道である2つの方法で説明したいと思います。

またPCとモバイルでレイアウトが切り替わるレスポンシブ対応についても紹介します。

floatを使用する方法

最初はfloatを使用した方法を紹介します。まずは完成形から。

カラム左右は分かりやすく50%:50%にしています。

header
left
right

floatの解説

floatプロパティは、指定された要素を左または右に寄せて配置する際に使用します。

■値

left

指定した要素を左に寄せます。後に続く要素は右側に回り込みます。

right

指定した要素を右に寄せます。後に続く要素は左側に回り込みます。

サンプルコード

まずはhtmlから。


<body>

 <div class="float_column_outer_wrapper">
  <div class="column float_column_header">header</div>
  <div class="column float_column_left">left</div>
  <div class="column float_column_right">right</div>
  <div class="column float_column_footer">footer</div>
 </div>

</body>

続いてcssです。


.float_column_outer_wrapper{
width:100%;
height:100%;
margin:0;
}

.float_column_header{
width:100%;
height:50px;
background:#dcdcdc;
}

.float_column_left,.float_column_right{
height:200px;
width:50%;
}

.float_column_left{
float:left;
background:#00ffff;
}

.float_column_right{
float:right;
background:#7fffd4;
}

.float_column_footer{
clear:both; /*footerの回り込みを解除*/
width:100%;
height:50px;
background:#000;
color:#fff;
}


Flexboxを使用する方法

続いてFlexboxを使用した方法を紹介します。

完成形はfloatと同じですね。

header
left
right

Flexboxの解説

Flexboxはcss3から導入された新しいレイアウトモジュールです。

これまで並びの配置は先に説明したfloatで行うことが一般的でしたが、Flexboxを使用することで簡単に、また色々なレイアウトが可能になりました。

■値

Flexboxは、並びを配置したい子要素を親要素で囲み、親要素に「display:flex;」を指定します。

Flexboxについての詳細はこちらのサイトで大変分かりやすく解説されていますので、詳しく確認したい方はご覧ください。

サンプルコード

htmlではfloatのコードに、クラスleftとrightを囲むクラス(flex_column_wrapper)を加えます。


<body>

<div class="flex_column_outer_wrapper">
<div class="column flex_column_header">header</div>

<div class="flex_column_wrapper">
<div class="column flex_column_left">left</div>
<div class="column flex_column_right">right</div>
</div>

<div class="column flex_column_footer">footer</div>
</div>

</body>

cssではflex_column_wrapperにdisplay:flexを与えます。


.flex_column_outer_wrapper{
width:100%;
height:100%;
margin:0;
}

.flex_column_header{
width:100%;
height:50px;
background:#dcdcdc;
}

.flex_column_wrapper{
display:flex;
}

.flex_column_left,.flex_column_right{
height:200px;
width:50%;
}

.flex_column_left{
background:#00ffff;
}

.flex_column_right{
background:#7fffd4;
}

.flex_column_footer{
width:100%;
height:50px;
background:#000;
color:#fff;
}


コードだけ見るとfloatの方が簡単で使いやすいと感じるかもしれませんが、Flexboxを使うメリットとしては様々なプロパティが用意されており、子要素内の垂直位置の調整(align-items)が安易にできるなど、子要素の調節がしやすいことです。

そういった面でもレイアウトにはFlexboxをおすすめします。

レスポンシブ対応

カラムレイアウトのレスポンシブ対応としては、PCでは2カラムや3カラムで表示させ、スマホ等のモバイルでは1カラム(縦並び)にすることが一般的かと思います。

ここではFlexboxを使用した方法で解説したいと思います。まずは完成形から。

PCでの表示

header
カラム1
カラム2

スマホでの表示

header
カラム1
カラム2

サンプルコード

htmlは基本同じですが、クラス名のみ少し変更しています。


<body>

<div class="responsive_column_outer_wrapper">
<div class="responsive_column_header">header</div>

<div class="responsive_column_wrapper">
<div class="column responsive_column_left">カラム1</div>
<div class="column responsive_column_right">カラム2</div>
</div>

<div class="column responsive_column_footer">footer</div>
</div>

</body>

cssではメディアクエリを使用し、画面サイズによって表示を変更させます。

head内に「meta viewport」タグの追加を忘れずに。


.responsive_column_outer_wrapper{
width:100%;
height:100%;
margin:0;
}

.responsive_column_header{
width:100%;
height:50px;
background:#dcdcdc;
}
.responsive_column_wrapper{
display:flex;
}

.responsive_column_left,.responsive_column_right{
height:200px;
width:50%;
}

.responsive_column_left{
background:#00ffff;
}

.responsive_column_right{
background:#7fffd4;
}

.responsive_column_footer{
width:100%;
height:50px;
background:#000;
color:#fff;
}

@media screen and (max-width:768px){
.responsive_column_header{
width:100%;
height:50px;
background:#dcdcdc;
}
.responsive_column_wrapper{
display:block; /*カラム毎に改行させる*/
}

.responsive_column_left,.responsive_column_right{
height:200px;
width:100%; /*横サイズを画面いっぱいに表示*/
}

.responsive_column_left{
background:#00ffff;
}

.responsive_column_right{
background:#7fffd4;
}

.responsive_column_footer{
width:100%;
height:50px;
background:#000;
color:#fff;
}
}

まとめ

以上2カラムレイアウトの作り方でした。

レイアウト調節はビギナーの方はとっつきにくい部分があるかもしれませんが、レスポンシブデザインが常識となった現代では必須のスキルです。ぜひ習得し、魅力的なサイト作りを行いましょう!

About

EnjomonWebは、「えんじょもん」である元転勤族の管理人が石川県金沢市から発信する、WEB制作情報をメインとした情報発信サイトです。

コーディング習得過程で検索してもすぐに解決しなかったことや、初心者には分かりづらい内容を分かりやすく説明することができるサイトを目指しています。

※「えんじょもん」とは金沢弁で「遠方の人、県外出身の人」という意味の方言。