現在地: Home » 初級ホームページ作成講座:目次 » 速習CSSレイアウト解説:position2カラムカラム左サイドバー

position2カラムカラムサンプルソース|左サイドバー

レイアウト図

【1】全体を囲む枠組を作成

  1. 全体を囲む大外枠を【id名/#wrapper】としました。
  2. 全体の幅を【700px】で固定してます。
  3. 画面の中央に寄せる為にマージンを{margin:0px auto;}と指定します。
    【auto】はボックスを中央寄せにする為の指定とでも考えて下さい。
  4. (注)中央寄せにする場合、古いブラウザへの対応でスタイルシートで【body】の指定を【text-align:center;】として下さい。
  5. なぜ【#wrapper】で囲むのか?中央に一括配置する為です。

CSS

#wrapper{
padding:0px;
margin:0px auto;
width:700px;
}

HTML

<div id="wrapper"></div>

上記指定が完了したら、HTMLの<div id="wrapper"></div>の中にボックス【div】を5つ入力します。

<div id="wrapper">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>++++++++++wrapperの終り

▲Top

【2】ヘッダー部分

  1. ヘッダー部分を【id名/#header】としました。
  2. 【#wrapper】で全体の幅を【700px】と固定したので、特に【#header】の幅指定はしません。
  3. 高さだけ【150px】としました。

CSS

#header{
padding:0px;
margin:0px;
height:150px;++++++++++高さのみ指定
}

HTML

<div id="wrapper">
<div id="header"> </div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>++++++++++wrapperの終り

段組解説図

▲Top

【3】container部分コンテンツとサイドバーの基点

  1. ボックス部分を【id名/#container】としました。
  2. 幅を【100%】指定します。
  3. 以降を【positionプロパティ】で指定するための基点ボックスです。
  4. 【position】プロパティで【relative】を指定します。
  5. 最後にボックスを2つ<div id="container"></div>の中に移動します。コンテナー用とサイドバー用です。

なぜ?囲むのか。

下記サンプルのような場合を想定しています。【position:absolute】は他のボックスとは独立して配置している点に注意が必要です!

CSS

#container{
position:relative;
width:100%;
}

HTML

<div id="wrapper">
<div id="header"> </div>
<div id="container">
<div> </div>
<div> </div>
</div>+++++containerの終り
<div> </div>
</div>+++++wrapperの終り

段組解説図

段組解説図

▲Top

【4】コンテンツ部分

  1. コンテンツ部分を【id名/#contents】としました。
  2. 幅を【500px】指定します。
  3. 【position】プロパティで【absolute】を指定し、上方向に0px 左方向に200pxで配置指定します。

CSS

#contents{
padding:0px;
margin:0px;
width:500px;
position:absolute;
top:0px;
left:200px;
}

HTML

<div id="wrapper">
<div id="header"> </div>
<div id="container">
<div id="contents"> </div>
<div> </div>
</div>+++++containerの終り
<div> </div>
</div>+++++wrapperの終り

段組解説図

▲Top

【5】サイドバー部分

  1. 左サイドバー部分を【id名/#left_sidebar】としました。
  2. 幅を【180px】指定します。
  3. 【position】プロパティで【absolute】を指定し、上方向に0px 左方向に0pxで配置指定します。

CSS

#left_sidebar{
padding:0px;
margin:0px;
width:180px;
position:absolute;
left:0px;
top:0px;
}

HTML

<div id="wrapper">
<div id="header"> </div>
<div id="container">
<div id="contents"> </div>
<div id="left_sidebar"> </div>
</div>+++++containerの終り
<div> </div>
</div>+++++wrapperの終り

段組解説図

▲Top

【6】フッター部分

さて!ここで問題が発生します。繰り返しになりますが【position:absolute】で指定したボックスは他のボックスとは独立した存在(配置)でしたね。

取りあえず、通常の方法で【フッター】を配置したサンプルを見てください。その方が解りやすいと思います。

  1. フッター部分を【id名/#footer】としました。
  2. 【#container】で全体の幅を【700px】と固定したので、特に【#footer】の幅指定はしません。
  3. 著作権表示部分(copyright)になるので、文字の中央寄せを指定しておきます。

段組解説図

CSS

#footer{
padding:0px;
margin:0px;
text-align:center;
}

HTML

<div id="wrapper">
<div id="header"> </div>
<div id="container">
<div id="contents"> </div>
<div id="left_sidebar"> </div>
</div>+++++containerの終り
<div id="footer"> </div>
</div>+++++wrapperの終り

では、解決策を2パターン

1:シンプルパターン

もっとも簡単ですが、人によっては嫌うレイアウトかも知れません。【#footer】を【#contents】の中に入れてしまいます!

  1. フッター部分を【id名/#footer】としました。
  2. 特に【#footer】の幅指定はしません。
  3. 文字の右寄せを指定しておきます。

CSS

#footer{
padding:0px;
margin:0px;
text-align:right;
}

HTML

<div id="wrapper">
<div id="header"> </div>
<div id="container">
<div id="contents">
<div id="footer"> </div>
</div>+++++contentsの終り
<div id="left_sidebar"> </div>
</div>+++++containerの終り
</div>+++++wrapperの終り

段組解説図

以上で完成です。好き嫌いが出そうですね!

2:【#contents】【#left_sidebar】をまたぐ普通のタイプ

一応、普通のタイプのように出来ますが、注意が必要です!

以上の点に注意して進みます。今までのCSSの指定を若干変えます。#footerを元の位置に戻します。

  1. フッター部分を【id名/#footer】としました。
  2. 特に【#footer】の幅指定はしません。
  3. 文字の中央せを指定しておきます。
  4. CSSの【#contents】部分の【position】指定を全て削除します。
  5. 変わりに【#contents】部分のマージン指定で左方向に200pxの余白を指定します。

意味が解るでしょうか?【#contents】部分の【position】指定を削除した事により【#contents】は通常のボックス配置にもどりました。【#left_sidebar】はそのまま【position:absolute】を指定してありますから、重ならないように通常の【margin】指定で左側に【200px】の余白を設けたわけです。

また、【#contents】が通常のボックス配置にもどった事により、【#footer】は【#contents】を基点として上手く配置できるわけです。

最後に、【#left_sidebar】の高さは【#contents】の高さを超えてはいけない事を忘れないで下さいね。

CSS

#contents{
padding:0px;
margin:0px 0px 0px 200px;
width:500px;
}

#footer{
padding:0px;
margin:0px;
text-align:center;
}

HTML

<div id="wrapper">
<div id="header"> </div>
<div id="container">
<div id="contents"> </div>
<div id="left_sidebar"> </div>
</div>+++++containerの終り
<div id="footer"> </div>
</div>+++++wrapperの終り

段組解説図

因みにサイドバー部分のボリュームが多くなると

段組解説図

以上で完成です。

▲Top

高性能サーバ

低価格サーバ

無料ホームページスペース