上部に水平ナビゲーション バーがあり、コンテンツが大きすぎる場合にスクロール バーが表示されるコンテンツ領域を持つページをレイアウトしようとしています。
これを行う私の現在の方法は、div 幅 100% です。高さ 50px; 絶対位置; トップ0; 左 0; 次に、高さが 100% の 2 番目の div。幅 100%; マージントップ 50px; オーバーフロー:自動; ただし、表示されるスクロールバーは 50px の余白でオフセットされているため、コンテンツがページの下部からはみ出してしまいます。マージンを削除するとすべて機能しますが、コンテンツがナビゲーション バーの後ろに配置されます。
また、コンテナにラップして、マージンを入れて実験し、オーバーフローを子に入れようとしましたが、それでも必要な効果が得られなかったようです。
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;
}