追加したいのですが、他のほとんどの回答はうまくいきました。しかし、それらを動作させるには長い時間がかかりました!
これは、設定height: 100%
が親divの高さのみを取得するためです。
したがって、HTML全体(本文内)が次のようになっているとします。
<div id="holder">
<header>.....</header>
<div id="body">....</div>
<footer>....</footer>
</div>
次に、以下で問題ありません。
html,body{
height: 100%
}
#holder{
min-height: 100%;
position:relative;
}
#body{
padding-bottom: 100px; /* height of footer */
}
footer{
height: 100px;
width:100%;
position: absolute;
left: 0;
bottom: 0;
}
...「ホルダー」は「ボディ」から直接高さを取得するため。
私の頭が痛い人への賞賛、その答えは私が結局仕事に就くことになったものでした!
しかしながら。HTMLがさらにネストされている場合(ページ全体の要素のみであったり、特定の列内にあるためなど)、すべての包含要素height: 100%
がdivにも設定されていることを確認する必要があります。そうしないと、「ボディ」と「ホルダー」の間で高さの情報が失われます。
たとえば、次の例では、すべてのdivに「フルハイト」クラスを追加して、ヘッダー/ボディ/フッターエレメントまでの高さを確認しています。
<div class="full-height">
<div class="container full-height">
<div id="holder">
<header>.....</header>
<div id="body">....</div>
<footer>....</footer>
</div>
</div>
</div>
そしてCSSでフルハイトクラスに高さを設定することを忘れないでください:
#full-height{
height: 100%;
}
これで問題が解決しました!
position:fixed
。ただし、これが最善の方法ではありません