8

上部に水平ナビゲーション バーがあり、コンテンツが大きすぎる場合にスクロール バーが表示されるコンテンツ領域を持つページをレイアウトしようとしています。

これを行う私の現在の方法は、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;
}
4

1 に答える 1