これは私が達成したいことです:
- コンテンツがビューポートを垂直に満たしていない場合でも、フッターは画面の下部に留まる必要があります。
- コンテンツ列には、コンテンツの高さが常に 100% になる境界線があります。列の数と幅はページごとに変わるため、背景画像から偽の列の境界線は使用できません。
- すべてのコンテンツが表示されている場合、スクロールバーは表示されません (例 1)。
- 解決策はすべて HTML/CSS であり、JS ではありません。
- 最小ブラウザ サポートは、IE9+ および Firefox、Chrome、Safari、Opera の最新のデスクトップ バージョンである必要があります。癖のないモード。
- ヘッダー/フッター/コンテンツの幅は常に固定されています (ヘッダーとフッターをコンテンツ領域内に配置する必要はありません)。ヘッダーとフッターの高さも固定されています。
Fluid Width Equal Height Columnsとこのスティッキー フッターの例の手法を試しましたが、すべての要件を同時に満たすことはできませんでした。どんなヒントでも大歓迎です。
編集:これまでのところ、私が得た最も遠いのは、Webkitブラウザーでは正しく機能するテーブルを模倣することですが、IE9とOperaでは機能しません。ここでフィドルを参照してください。
HTML:
<div class="table outer">
<div class="row header">
<div class="cell">header</div>
</div>
<div class="row content">
<div class="cell">
<div class="table inner">
<div class="row">
<div class="cell">content 1</div>
<div class="cell">content 2</div>
<div class="cell">content 3</div>
</div>
</div>
</div>
</div>
<div class="row footer">
<div class="cell">footer</div>
</div>
</div>
CSS:
html, body {
height: 100%;
}
.table {
display: table;
min-height: 100%;
height: 100%;
}
.table.outer {
width: 500px;
margin: 0 auto;
}
.row {
display: table-row;
}
.cell {
display: table-cell;
}
.header, .footer {
height: 25px;
background-color: #999;
}
.content {
background-color: #eee;
}
.table.inner {
width: 100%;
min-height: 100%;
height: 100%;
}
.table.inner .cell {
width: 33%;
border-right: 1px dashed #c00;
}