2013-07-09 20 views
57

レイアウトを設計する際に、html, bodyの要素 'height100%を設定しましたが、場合によってはこれが失敗するため、何を使用する必要がありますか?高さ:100%または最小高さ:HTMLおよび本体要素の場合は100%ですか?

html, body { 
    height: 100%; 
} 

または

html, body { 
    min-height: 100%; 
} 

まあ、これは意見ではありません各メソッドは、独自の欠陥を持っているよう基づき、その推奨のために移動するための方法とその理由は何ですか?

答えて

142

htmlbodyに背景画像を適用しようとすると、ブラウザウィンドウ全体がいっぱいになりません。代わりにこれを使用します。

html { 
    height: 100%; 
} 

body { 
    min-height: 100%; 
} 

私の推論が与えられている(私は、このように背景を適用する方法を総合的に解説)here

ところで、あなたが持っている理由は、指定しheightmin-heighthtmlおよびbodyには、どちらの要素も固有の高さを持たないためです。どちらもデフォルトでheight: autoです。これは高さが100%のビューポートなので、height: 100%がビューポートから取得され、コンテンツのスクロールを可能にするために最小限はbodyに適用されます。

彼らは、ビューポートの高さを超えて成長し始めると最初の方法は、両方のheight: 100%を使用して、その内容を拡大してからbodyを防ぐことができます。技術的にはこれはではありません。のコンテンツはスクロールしませんが、bodyにはフォールドの下にギャップが残ることがありますが、これは通常は望ましくありません。両方のmin-height: 100%を使用して

第二の方法は、htmlは、明示的なheightを持っていない限り、割合がmin-heightbody上では動作しませんので、bodyhtmlの完全な高さまで拡大することはありません。完全を期すために

section 10 of CSS2.1は、すべての詳細が含まれていますが、それはあなたが、私がここで説明した内容を超えたものに興味を持っていないのであれば、あなたはそれをスキップすることができますので、読んで畳み込まれ極めてです。

+2

これは私がこれが最も好きだったものです:) 'height:100%はビューポートから取得され、コンテンツのスクロールを可能にするために最小限に身体に適用されます' easy peasy solution ... thanks // –

+0

スクロールバーはどのようにして魔法のように表示されますか? 'html'要素はデフォルトで' overflow:visible'を持っていますので、ブラウザの振る舞いのためにスクロールバーが表示され、ドキュメントの全体的な流れを表示することができます。 –

+0

@FabrícioMatté:それは、スクロールバーの出所であるビューポート上で 'overflow:auto'に変換されます。それはセクション11でカバーされています:http://www.w3.org/TR/CSS21/visufx.html – BoltClock

関連する問題