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

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の終り
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の終り

なぜ?囲むのか。
下記サンプルのような場合を想定しています。【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の終り


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の終り

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の終り

さて!ここで問題が発生します。繰り返しになりますが【position:absolute】で指定したボックスは他のボックスとは独立した存在(配置)でしたね。
取りあえず、通常の方法で【フッター】を配置したサンプルを見てください。その方が解りやすいと思います。

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パターン
もっとも簡単ですが、人によっては嫌うレイアウトかも知れません。【#footer】を【#contents】の中に入れてしまいます!
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の終り

以上で完成です。好き嫌いが出そうですね!
一応、普通のタイプのように出来ますが、注意が必要です!
以上の点に注意して進みます。今までのCSSの指定を若干変えます。#footerを元の位置に戻します。
意味が解るでしょうか?【#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の終り

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

以上で完成です。