その1では、floatプロパティを使ったフルCSSレイアウトの方法を紹介しました。今回は、positionプロパティを使った方法を紹介します。
positionプロパティは「どこでも配置モード」でも使われているCSSプロパティで、配置位置を指定するためのものです。
チャレンジする前に、「フルCSSレイアウトで段組にチャレンジ!(その1)」のチャレンジする前にの部分をよく読みましょう。
配置位置を指定するためには、配置方法と配置位置の指定を行う必要があります。
スタイルシートマネージャーを起動し、「追加」ボタンをクリックします。指定する対象(HTMLタグ/クラス/ID)を選択して、「位置」タブを選択します。

この画面はfloatプロパティやwidthプロパティを使うときに出てきましたね。
配置方法の指定は、「属性」の「位置」で指定します。指定できる内容は以下の通りです。何も指定しなければ、「指定しない」を指定したモノとして扱われます。
position : static;position : relative;position : absolute;position : fixed;配置位置の指定は、左、右、上、下で単位と数値を入力します。先に単位を指定して、数値を入力します。
CSSでの指定は、以下の通りです。
left : 指定した数値と単位;right : 指定した数値と単位;top : 指定した数値と単位;bottom : 指定した数値と単位;
左メニュー

右メニュー
<body>
<div class="header">
ヘッダ部分です
</div>
<div class="main">
<div class="contents">
コンテンツ部分です。
</div>
<div class="sidemenu">
メニュー部分です。
</div>
</div>
<div class="footer">
フッタ部分です。
</div>
</body>
な感じでマークアップしましょう。各部分の内容はそれぞれ適切なマークアップを施してください。
body,h1,h2,h3,p,div,ul,ol,li,dl,dd,dt,table,form,blockquote,pre,address{
margin : 0;
padding : 0;
}
body{
width : 100%;
}
.header{
width : 100%;
height : 50px;
}
.main{
width : 100%;
}
.contents{
margin-left : 150px;
}
.sidemenu{
position : absolute;
left : 0px;
top : 50px;
width : 150px;
}
.footer{
width : 100%;
}
.sidemenu ul{
list-style-type : none;
body,h1,h2,h3,p,div,ul,ol,li,dl,dd,dt,table,form,blockquote,pre,address{
margin : 0;
padding : 0;
}
body{
width : 100%;
}
.header{
width : 100%;
height : 50px;
}
.main{
width : 100%;
}
.sidemenu{
width : 150px;
position : absolute;
top : 50px;
right : 0px;
}
.contents{
margin-right : 150px;
}
.footer{
width : 100%;
}
.sidemenu ul{
list-style-type : none;
}

<body>
<div class="header">
ヘッダ部分です
</div>
<div class="main">
<div class="contents">
コンテンツ部分です。
</div>
<div class="sidemenu">
メニュー部分です。
</div>
<div class="affiriate">
広告用スペースです。</div>
</div>
</div>
<div class="footer">
フッタ部分です。
</div>
</body>
左右のメニュー幅固定、コンテンツ部分幅可変のCSS
body,h1,h2,h3,p,div,ul,ol,li,dl,dd,dt,table,form,blockquote,pre,address{
margin : 0;
padding : 0;
}
body{
width : 100%;
color : #333333;
}
.header{
width : 100%;
height : 50px;
}
.main{
width : 100%;
}
.sidemenu{
width : 150px;
position : absolute;
top : 50px;
left : 0px;
}
.contents{
margin-left : 150px;
margin-right : 150px;
}
.affiriate{
width : 150px;
position : absolute;
top : 50px;
right : 0px;
}
.footer{
width : 100%;
}
.sidemenu ul{
list-style-type : none;
}
メニュー部分をHTMLの後ろに記述したときのデザインのバリエーションが増えます。アクセシビリティに配慮しながら幅可変のページが作りやすいです。本文を先に記述することで、必要な情報にアクセスしやすいメリットがあります。
パソコンで閲覧するときには気にならないメニュー部分ですが、携帯フルブラウザを使う場合は本文を読むのにかなり手間取ります。本文を読むために下へのスクロールがたくさん必要なページはうんざりします。(筆者はPCサイトビューアーや京ぽんといったMobile OperaでPC向けのサイトを閲覧することが結構あります)
メニュー部分が本文より長くなる場合に表示がおかしくなります。あと、中途半端にCSS対応しているブラウザでの表示崩れが出やすくなります。最近のPC向けブラウザはいいのですが、携帯フルブラウザのNetFrontはかなりヤバイです。
ページ編集画面での表示を当てにするのはできません。面倒でもブラウザを起動して確認してください。
OperaやFirefoxもインストールして確認するようにします。というより、先にこれらのブラウザでチェックをしてから、Internet Explorerで確認するようにしてください。Internet ExplorerはCSSの解釈でOperaやFirefoxに劣ります。Internet Explorerで表示させて大丈夫と思っていたら、OperaやFirefoxで崩れているというという失敗は筆者自身何度もやらかしています。