2011-09-17 18 views
6

内容がViewportよりも短いときにページの下部まで展開するにはコンテンツ列が必要ですが、コンテンツが長くなると展開されます。列はページの上から少し下がって来なければなりません。ここで列を常にページの下まで伸ばすにはどうすればよいですか?

<html> 
    <body> 
    <div id="content"> 
     <p> asdf ghjkl </p> 
    </div> 
    </body> 
</html> 

はこの方法で問題はしかし、ページがあるのでmin-height: 100%;は、アカウントにパディングを取らないということであるCSS

#content { 
    min-height: 100%; 
    margin: 100px 0 0; 
} 

次のとおりです。ここで

は、私が説明した何のためにHTMLであります常に私が望むものよりも大きい。

これは私が求めている動作です:

desiredbehavior

はJavascriptを使用せずにこれを実現する方法はありますか?

+0

http://nerdhow.net/(これはフロントページです)の '#contentcolumn'は'#wrapper'に対応し、 '.region-content'は' #content'に対応します – enthdegree

+0

私は私が欲しいものをよりよく説明するためにイメージ。 – enthdegree

+0

min-heightの使用を検討しましたか?これは、内容の内容にかかわらず、コンテンツdivの最小の高さを設定することを可能にします。その後、お客様のニーズに合わせて拡張されます。 – Paragon

答えて

3

絶対位置はあなたのためにこれを行うことができます。

まず、あなたのCSSにこのルールを適用し、その後、あなたのmin-heightmarginを削除します。

#content { 
    position: absolute; 
    top: 100px; 
    bottom: 0; 
} 
0

あなたは絶対位置を使用して(あなたが列の下に単色の背景を必要とする場合)、余分なブロックを追加することによって、それを達成することができます。だから、

1

を得るでしょう、あなたが代わりに指定された幅と高さを持つボックスをレンダリングするためにブラウザを強制することができ、border-boxに設定することでbox-sizing

を使用し、ボーダーとパディングを追加することができます内側に箱があります。

+0

ありがとう!私はこれについて知らなかったし、それは私が問題を解決するのを助けた。 – enthdegree

1

ここで、私がやったことは終わりです。問題を直接解決するのではなく、いくつかの修正プログラムを追加しました。

まず第一には、ここではいくつかの観測は:

  1. 我々は#columnが長いビューポートより大きい場合、#columnの長さは<body>の高さを指定する必要があることを知っています。

  2. #columnがビューポートより短い場合、ビューポートの高さは<body>の高さを指定する必要があります。

  3. コンテンツの長さにかかわらず、すべての状況下で列がページの下部まで伸びる必要があります。我々はheight: auto<body>に設定されていることを確認する必要がある最初の基準については

Heightこれが設定されていない場合はこれを無効にします。また、#columnheight: auto;overflow: hidden;があることを確認して、コンテンツのサイズに拡大させる必要があります。

position: absolute;min-height: 100%;<body>に設定する必要があります。 <body>の長さは、#columnがそれより長い場合には拡大されますが、ビューポートよりは短くなりません。この次の部分は、修正が入ってくる部分です。

第3の基準については、いくつかの特別なCSSを追加して、特別なCSSを追加することです。私のHTMLでは、#columnのすぐ外に2つのdivを追加しました。外のdivのために

<div id="colhack-outer"> 
    <div id="colhack-inner"> 
    </div> 
</div> 
<div id="column"> 
    ... 
</div> 

あなたは絶対にそれをpostiionし、それが100%までの高さ、代替ボックスモデルを使用して、パディングを使用してコンテンツ領域だシフトすることを強制します設定します。すべての列のスタイリング(背景色、ボーダー半径、シャドウなど)を内側のdivに適用します。ここで私はそれらに適用されるCSSは次のとおりです。

#colhack-outer { 
    height: 100%; 
    padding: <where you want to shift the column to>; 
    position: absolute; 
    width: 50%; 
} 
#colhack-inner { 
    height: 100%; 
    width: 100%; 
    background-color: #303030; 
} 

あなたはまた、あなたの実際のコンテンツコンテナがその特別なボックスモデルを使用して作成し、あまりにもパディングでそれをシフトする必要があります。ここに

#contentbox { 
    position: relative; 
    padding: <where you want to shift the column to>; 
    width: 50%; 
    color: #EEEEEC; 
    -moz-box-sizing: border-box; 
    -webkit-box-sizing: border-box; 
    box-sizing: border-box; 
} 

ライブ例:http://nerdhow.net/

ご質問がある場合や、不明な点がある場合は、コメントを投稿してください。

+0

ありがとうございました...内側のdivの背景を設定すると、私が持っていた問題が修正されました – Martin

関連する問題