トップページ > 本文3段組 > [3]position:absoluteで並べる

CSSレイアウト[本文3段組のレイアウト-3]position:absoluteで並べる

position:absoluteを使ってボックスを並べる方法。float無し。 HTML上の記述の順番は自由に変えられ、各ボックスの幅やデザインも自由。ボックスを入れ子にする方法よりHTMLの記述がスッキリする。

「position:absolute」についての詳細は「TIPS: position:absoluteについて」を参照。

図解

このページは、右の図のような構成で作られている。

3つのボックスのうち、左の#sideと右の#side-rは絶対位置指定をしている。
ここで重要なのは#mainには絶対位置指定をしないこと。 #mainの天地のサイズは可変的なので、この下に続く#footerが追随しなくてはならない。position;absoluteを指定すると、他の要素に一切影響を与えなくなるので#footerが#mainのすぐ下に配置せずせり上げることになる。

絶対位置指定する#sideと#side-rには、親ボックスは特にしていしない。ウィンドウが親になる。HTML上の記述ではbodyに次ぐ全体を囲むボックス#outline内に書いている。
なので、#sideは絶対位置指定でtop:116px、左からの距離は#outlineが基準になるので0(記述無し)、
#side-rはtop:116pxは同じ、左からの距離は#outlineを基準にmargin-left : 670px;。

CSSの記述は下記の通り。これは「3col3.css」に記述 。

#main {
width: 500px;
margin-left: 170px; ←親ボックス(outline)の左からの距離を指定
}
#side {
width: 170px;
position: absolute; ←絶対位置指定を宣言
top: 116px; ←上からの絶対位置(親ボックス(outline)の左から0pxは省略)
}
#side-r {
width: 130px;
position: absolute; ←絶対位置指定を宣言
top: 116px; ←上からの絶対位置
margin-left: 670px; ←左からの位置。ブラウザウィンドウでなく親ボックスからの距離なのでmargin-leftで指定。
font-size: 80%;
background: url(../img/side_bg.jpg) no-repeat;
}

HTMLの記述は下記のようになっている。

<div id="header">略</div><!-- END header -->

<div id="outline">

<div id="main">
<h2 id="pankuzu">略</h2> ←パンくずリスト
本文
</div><!-- END main -->

<div id="side-r">
略(右側のサブメニュースペース) ←絶対位置指定
</div><!-- END side-r -->

<div class="side">
略(このサイトで全ページ共通の左側のメニュー) ←絶対位置指定
</div><!-- END side -->

<div id="footer">略</div><!-- END footer -->
<div id="headersubmenu">略<!-- END headersubmenu -->

</div><!-- END outline -->
このページのCSSは、position:absolute;で3段に組むために「3col3.css」を使用。
このカテゴリー用の「3column.css」と、サイト全共通の「style_import.css」を使用。

このスペースは、Position:absoluteで絶対位置指定して作っている。左側のメニューボタンがあるスペースも同様。3つのボックスにfloat指定はしていない。真ん中のメインスペースは、左マージンを170ピクセル(左のメニュースペースの幅)とって配置している。

関連ページ
banner
banner