2012-02-03 12 views

答えて

25

2014 UPDATE:このレイアウトの問題を解決するための近代的な方法はuse the flexbox CSS modelにあります。これは、すべての主要なブラウザとIE11 +でサポートされています。


ここdisplay: table-rowdiv Sを使用して柔軟な高さのスティッキーフッターのソリューションです:

html, body { 
 
    height: 100%; 
 
    margin: 0; 
 
} 
 
.wrapper { 
 
    display: table; 
 
    height: 100%; 
 
    width: 100%; 
 
    background: yellow; 
 
} 
 
.content { 
 
    display: table-row; 
 
    /* height is dynamic, and will expand... */ 
 
    height: 100%; 
 
    /* ...as content is added (won't scroll) */ 
 
    background: turquoise; 
 
} 
 
.footer { 
 
    display: table-row; 
 
    background: lightgray; 
 
}
<div class="wrapper"> 
 
    <div class="content"> 
 
    <h2>Content</h2> 
 
    </div> 
 
    <div class="footer"> 
 
    <h3>Sticky footer</h3> 
 
    <p>Footer of variable height</p> 
 
    </div> 
 
</div>

何に注意する必要がありますが、CSSが文書をレイアウトするために設計されたことがありますWebアプリケーション画面ではありません。 CSS表示:テーブルのプロパティは非常に有効ですが、all major browsersでサポートされています。これは、レイアウトのために構造テーブルを使用するのと同じではありません。

+1

+1、これは本当にクールです。あなたはこのアプローチの欠点を知っていますか?あなたはそれが携帯電話でどのように成立すると思いますか? –

+1

これは素晴らしいです - ありがとう!しかし、それは、可変高さのスティッキーフッターと、スクロールするコンテンツ領域のためのものではありませんでした。私はコンテンツ上で "display:table-row"を省略し、 "overflow-y:scroll"を設定することでこれを行うことができることを発見しました。フッタで、私はそれを "display:table-footer-group"に変更しました。これにより、必要なものが正確に動作するようになりました。 – nkoren

+1

クラスラッパーに 'table-layout:fixed;'を追加してください。それがなければ、私はIEで幅の問題がありました。コンテンツは最大幅に関係なくオーバーフローしていました。 –

0

私はあなたが何を理解していると思います。

あなたは、例えばため

..高さのCSSを削除して、もしあなたはまだ何の間隔パディングトップとパディング下でそれを交換する必要があり

#footer { 
    position: absolute; 
    bottom: 0; 
    width: 100%; 
    background: #6CF; 
    padding-top: 20px; 
    padding-bottom: 20px; 
} 
+0

ありがとうございます – diegoiglesias

+0

これがうまくいけば、私の投稿をanwsersとしてマークすることができます。ありがとう –

-1
#wrapper, #content, #footer { 
    width:100%; 
    height:100%; 
    position: relative; 
} 


<div id="wrapper"> 
    <div id="content"></div> 
    <div id="footer"></div> 
</div> 
+0

...可変高さのフッターは作成されませんが、ビューポート領域の100%にスケールされます。 – HumanInDisguise

関連する問題

 関連する問題