WEBデザインでTOPページのデザインとコーディングが終われば、その後、下層ページのコーディングに取り掛かるんですが、ページのコンテンツ量によっては、内容が少なくてフッターが上部に浮いてくる場合があります。
そんな時にfooterを最下部にピッタリくっつける場合の方法を2パターン備忘録として残しておきます。
どういう現象の時というと、図で見るのが一番わかり易いですが、要はこんな感じの時の対処法の話です。

最も一般的なやり方はCSSで調整するやり方ですかね。
【HTML】
<body>
<div id="wrapper">
<header>
普通のヘッダー
</header>
<nav>
ナビゲーション
</nav>
<div id="contents">
<p>内容の少ないコンテンツ</p>
<p>内容の少ないコンテンツ</p>
<p>内容の少ないコンテンツ</p>
<p>内容の少ないコンテンツ</p>
</div>
<footer>
下に下がって欲しいフッター
</footer>
</div><!-- /#wrapper -->
</body>
マークアップはごくごく一般的な記述
【CSS】
html{
height:100%; /*ブラウザいっぱいに高さを取得*/
}
body{
width: 100%;
height:100%; /*ブラウザいっぱいに高さを取得*/
margin:0;
padding:0;
background-color: #f2f1f1;
}
#wrapper{
width:960px;
margin:0 auto;
position: relative;/*フッターの位置設定の基準*/
min-height: 100%;/*最低値を100%にしておけばコンテンツ量が増えた分だけ伸びる*/
height: auto !important;/*ie6用(今いるかな?)*/
height: 100%;
background-color: #d3d2d2;/*コンテンツの背景色は全体囲みのココに指定*/
}
header{
height:100px;
background-color: #F70841;
}
nav{
height: 30px;
background-color: #000;
color: #fff;
}
#contents{
padding:60px 0;
height:auto;
height:100%;
padding-bottom: 100px;/*footerの高さ分だけ余白を設ける*/
}
footer{
height: 100px;
background-color: #F70841;
position: absolute;/*wrapperの基準の絶対配置*/
bottom: 0; /*一番下に配置*/
width: 100%;
}
ポイントとしては上記に書いてるとおりですが、まとめるとこんな感じ
CSSでの設定はコーディング作業の最初の段階できちんとやっておけば楽なのですが、TOPページを終了後、コンテンツ量の少ない下層ページを作成した時に「あっ!footerが上に上がってくる!!」ってなってしまった時は手っ取り早くjQueryで対応するのがいいかもしれません。
footerをウィンドウ下部に固定する『footerFixed.js』
上記のサイトからJSをダウンロードしてhead部分に記述します。
<script type="text/javascript" src="footerFixed.js"></script>
後は下に落としたい部分の「#footer」にします。
※html5でマークアップしていた場合は記述をID表記にする必要があります。
<div id="footer">
下に下がって欲しいフッター
</div>
こちらのjQueryを実装した際、一番下に1pxの空きが出来る場合があります。そういう時はJSファイルの32行目辺りの記述の「-1」の部分を削除すれば、一番下にぴったりくっつきます。
(変更前) document.getElementById(footerId).style.top = (wh-fh-ft-1)+"px"; (変更後) document.getElementById(footerId).style.top = (wh-fh-ft)+"px";
どちらでやるかは好みがわかれるかと思いますが、てっとり早く行きたいなら『footerFixed.js』の方がいいかもしれません。ですが、ページを表示した時に、一瞬footerが上部に表示され、カクっと下に落ちる現象も何度か確認していますので、CSSで最初のコーディングでposition設定をしておいたほうがいい気もします。
後々の事も考えて、的確な構築がつくづく大事なんだと再認識しました。今回は以上ですm(_ _)m