これがあなたの解決策です:http://jsfiddle.net/S4akv/1/
のハードハイトを設定する必要はありません.middle
。コンテンツが数行しかない場合は、何も必要ないスクロールバーが表示されます。
ヘッダーとフッターを使用すると、フッターが押し下げられ、何があってもスクロールバーが強制されるためheight: 100%
、クラスに参加したくありません。また.middle
、ほとんどのブラウザはこれをブラウザの高さの100%として解釈するため、明確なカットは必要ありません。したがって、ブラウザのサイズを大きくすると、高さが変わらないか、フッターが移動しません。height:100%
ここでの最善の解決策は、ラッパーとそれに関連する背景をアタッチすることです。div内のコンテンツに応じて、.middle
この答えは変わる可能性がありますが、単純なパラメーターを考えると、これが最もエレガントな方法です。
秘訣は、含まれているすべての要素に高さが設定されていることを確認することです。理由は、ブロック要素はheight: 100%
それを含む領域の100%にすぎないからです。この場合、ミドル、ラッパー、およびbody, html
body,html { height: 100%; margin:0; padding:0; }
.wrapper { min-height: 100%; width: 100%; background-color: red; position:relative; padding-bottom: 200px; }
.header { height: 200px; width: 100%; background-color: blue; }
.middle { }
.footer { height: 200px; width: 100%; background-color: green; position:absolute; bottom: 0; }
ネストされたコンテンツ.middle
が100%の高さである必要がある場合は、高さ、絶対位置、および負のマージンの組み合わせを使用するより良い方法があります。猫の皮を剥ぐ方法は無数にあります。まあ、少なくとも一握り:)
.wrapper
フッター用のスペースを作るためにパディングを追加するように編集されました。ラッパーの下部のパディングは、フッターと同じ高さである必要があります