編集:すみません、恥ずかしい思いをします。1年ほど前に似たようなものを作りましたが、最初はこの状況に合わせることができないと思いました。どうやらそうでした。
他の人がすでに言っているように、絶対に配置することでフッターdivを一番下に置くことができます。問題は、コンテンツdivが大きくなったときにその位置を調整することです。フッターは絶対に配置されているため、コンテンツdivのフローに従わず、コンテンツが拡張されても同じ場所にとどまります。
秘訣は、絶対に配置されたdivですべてをラップすることです。コンテンツが大きくなると拡張され、フッターdivはドキュメントの境界線ではなくラッパーの境界線に従って配置されます。
これがコードです。コンテンツdiv内に一連のタグを配置してみると<br />
、すべてが調整されていることがわかります。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Layout test</title>
<style type="text/css">
* {
margin: 0;
padding: 0;
}
#wrapper {
min-height: 100%;
min-width: 100%;
position: absolute;
}
#header {
height: 100px;
background-color: red;
}
#content {
background-color: gray;
margin-bottom: 50px;
}
#footer {
height: 400px;
min-width: 100%;
position: absolute;
bottom: 0px;
margin-bottom: -350px;
background-color: blue;
}
</style>
</head>
<body>
<div id="wrapper">
<div id='header'>Header</div>
<div id='content'>
Content
</div>
<div id='footer'>footer</div>
</div>
</body>
</html>
オリジナル:
悲しいことに、cssにはこれを行うためのクリーンな方法がありません。ビューポートの高さ(hと呼びます)がわからないため、h-100-50を計算できません。ほとんどの人がフッターdivの50pxを表示できるように、Webサイトを構築する必要があります。これを行う方法は、コンテンツdivの最小の高さを設定することです。
min-height値は、標準のビューポートの高さから導出する必要があります。Google Labsは、訪問者のビューポートサイズに関するデータを公開し、ここで優れた視覚化を行いました:http:
//browsersize.googlelabs.com/
私は自分のビューポート用に設計しました。これは高さ620pxです(グーグルによると、このビューポートの高さは約80%です)。したがって、コンテンツdivの最小の高さは620-100-50=470ピクセルである必要があります。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Layout test</title>
<style type="text/css">
* {
margin: 0;
padding: 0;
}
#header {
height: 100px;
background-color: red;
}
#content {
min-height: 470px;
background-color: gray;
}
#footer {
height: 400px;
background-color: blue;
}
</style>
</head>
<body>
<div id='header'>Header</div>
<div id='content'>
Content
</div>
<div id='footer'>footer</div>
</body>
</html>