CSSでフッターをページ最下部にくっつけて固定する方法
ヘッダー、コンテンツ、フッターとHTMLを順にコーディングしただけだと、コンテンツの行数が少ないとフッターがコンテンツのすぐ下にくっついてしまい、画面下部に余白ができてしまいます。
See the Pen WWQxbE by natsuki (@natsukimemo) on CodePen.
CSSでフッターを画面の最下部に固定する
CSSでコンテンツの行数にかかわらず、フッターを画面の最下部に固定する方法です。
See the Pen pBjbjL by natsuki (@natsukimemo) on CodePen.
手順は下記の3つです。
フッターを最下部に固定する方法
- bodyタグの直後にdiv.wrapで全ての要素を囲う。
(クラス名は好きなものでOK。) - div.wrapにposition: relativeを指定する。
- footerに、position:absolute;とbottom:0;を指定する。
コードは下記です。
<body> <div id="wrap"> <header>ヘッダー</header> <div id="contents"> コンテンツに <br>フッターがくっついてきません。 <br>画面の下部で固定されています。 </div><!--#contents--> <footer>フッター</footer> </div><!--#wrap--> </body>
上記htmlの2行目と10行目、bodyタグの中の要素を全てdiv.wrapの入れ子にします。
CSSは下記になります。
※1行目~4行目は、ページの上下にできる余白を削除するCSSです。この記事の趣旨とそれるものなので詳しくはふれません。
*{ margin:0; padding:0; } html,body{ height:100%; } div#wrap{ position: relative; height:auto !important; /*IE6対策*/ height: 100%; /*IE6対策*/ min-height: 100%; } header{ background-color:#F0E68C; } div#contents{ background-color:#efefef; padding-bottom:30px; } footer{ position:absolute; bottom:0; background-color:#ff0000; width:100%; height:30px; }
5行目~6行目: htmlとbodyタグにheight:100%を指定します。
8行目~13行目: divタグid名wrapにpositionとmin-heightを指定します。heightはIE6対策に指定しています。
21行目~27行目: footerにpositionとbottom:0を指定します。
heightやwidthは、指定しないとfooter要素内のテキストの幅になります。
前後しますが、17行目~20行目: コンテンツ(idがcontentsのdivタグ要素)にフッターの高さと同じだけpadding-bottomを指定しておくとコンテンツとフッターが被らなく なります。
CSS以外の方法
CSSで固定する他にjsライブラリ『footerFixed.js』というものがあって、とても良いものだそうです。
to-Rさんのブログにリンクされています。【footerをウィンドウ下部に固定する 『footerFixed.js』】