2013-06-18 23 views
5

コンテンツが大きすぎるときにスクロールバーを取得するコンテンツ領域と上部に水平ナビゲーションバーがあるページをレイアウトしようとしています。100%高さdiv、スクロールバーが画面外に50pxあります。オーバーフローオート

これを行う私の現在の方法はdiv幅100%です。高さ50px;絶対的な位置;トップ0。左に0;次に高さ100%の第2のdiv。幅100%; margin-top 50px;オーバーフロー:自動;ただし、表示されるスクロールバーは50ピクセルの余白でオフセットされているため、コンテンツがページの下部に表示されます。私は余白を削除する場合はすべて動作しますが、ナビゲーションバーの後ろにコンテンツを置きます。

私はまた、マージンと子供のオーバーフローを実験するコンテナでそれをラップしようとしましたが、これはまだ必要な効果を持っていないようです。

jsFiddle、それをより良く説明しようとするコメントがあります。

http://jsfiddle.net/Piercy/hggXJ/

HTML

<div id="nav"> 
    <h1>Navigation</h1> 
</div> 
<!-- <div id="contentContainer"> --> 
    <div id="content"> 
    <div id="oversizeContent"> 
     <p>You can see the black border on this green box, but you cannot see the bottom black border. Similarly you cannot see the bottom arrow of the scrollbar.</p> 
     <p>I tried putting a wrapper around the content and putting the margin on that but the scrollbar still over flows Uncomment the contentContainer div and comment/uncomment the corresponding css.</p> 
    </div> 
    </div> 
<!-- <div> --> 

CSS

html, body 
{ 
    height:100%; 
    overflow:hidden; 
    color:white; 
    font-weight:bold; 
} 

#nav 
{ 
    height:50px; 
    width:100%; 
    background-color:red; 
    position:absolute; 
    top:0; 
    left:0; 
    z-index: 2; 
} 
#contentContainer 
{ 
    /* uncomment this if you bring #contentContainer into play */ 
    /* 
     margin-top:50px; 
     position:absolute; 
     top:0; 
     left:0; 
    */ 


    height:100%; 
    width:100%; 

} 
#content 
{ 
    /* moving this into #contentContainer doesnt help either */ 
    /* comment this if you bring #contentContainer into play */ 

     margin-top:50px; 
     position:absolute; 
     top:0; 
     left:0; 



    width:100%; 
    height:100%; 

    background-color:blue; 
    z-index: 1; 
    overflow: auto; 
} 
#oversizeContent 
{ 
    background-color:green; 
    width:400px; 
    height:1000px; 
    border:10px solid black; 
} 
+0

あなたは '#oversizeContent {margin-bottom:50px; } 'これを修正するには? – gaynorvader

答えて

10

の代わりheight:100%;bottom:0;を行うと、に設定何らコンテナが存在しない場合、それは相対的な親またはビューポートの一番下に移動しますposition:relative;

DEMO

+1

私はマージントップを維持しなければならなかったが、ボトムを追加しなければならなかった:0;高さを取り除く:100%;それをするように見えた!ありがとう、http://jsfiddle.net/Piercy/E69TZ/1/ – Piercy

+1

喜んで助けてください!^_^...要素を絶対配置すると、高さと幅のプロパティの代わりに、上、下、左と右を使用すると便利な場合がよくあります。 –

+1

また、メインページにスクロールバーがある場合、100%の高さのコンテンツがウィンドウからスクロールされないように、絶対位置ではなく「位置:固定」を行う必要がありました。 –

関連する問題