2017-03-27 15 views
0

スクロールバーをボックスコンテンツdivに表示することができません。 'overflow-y:auto'を追加しても機能しません。子divに垂直スクロールバーが表示されない

私の要件:

  • 全体のレイアウトは、ブラウザの高さに調整する必要があります。だから私は が#wrap {...身長:50vh; ...}
  • スクロールバーには、ヘッダー を含めないでください。これは、ボックスコンテンツのdivにのみ適用する必要があります。ヘッダーの高さをコンテンツに合わせ、必要に応じてラップします。 https://jsfiddle.net/mjvancouver905/5vswprfw/

    ありがとう:

はここでここでバイオリンへのリンクのCSS

#wrap { 
     margin: 10px; 
     height: 50vh; 
     border: 2px solid black; 
    } 

    .container { 
     border: 4px solid red; 
     padding: 4px 3px; 
     margin: 0; 
     max-height: 90%;  /* As a percentage of the parent. */ 
     /* height: 300px;  /* This causes the scroll bar to appear, but its not what I want. */ 
    } 

    .box-header { 
     background-color: green; 
     padding: 5px 10px; 
     color: white; 
    } 

    .box-content { 
     border: 3px solid blue; 
     overflow:auto; 
     padding: 5px; 
     padding-top: 10px; 
     max-height:100%; 
    } 

そしてHTML

<div id="wrap"> 
    <div class="container"> 
     <div class="box-header"> Header String</div> 
     <div class="box-content"> 
      <p>line 1</p> 
      <p>line 2</p> 
      <p>line 3</p> 
      <p>line 4</p> 
      <p>line 5</p> 
      <p>line 6</p> 
      <p>line 7</p> 
      <p>line 8</p> 
      <p>line 9</p> 
      <p>line 10</p> 
      <p>line 11</p> 
      <p>line 12</p> 
      <p>line 13</p> 
      <p>line 14</p> 
      <p>line 15</p>   
      <p>line 16</p> 
      <p>line 17</p> 
      <p>line 18</p> 
      <p>line 19</p>   
     </div> 
    </div> 
</div> 

です。

答えて

1

あなたはflexレイアウト

#wrap { 
 
    margin: 10px; 
 
    border: 2px solid black; 
 
} 
 

 
.container { 
 
    padding: 4px 3px; 
 
    margin: 0; 
 
    height: 50vh; 
 
    /* As a percentage of the parent. */ 
 
    /* height: 300px; \t \t \t \t /* This causes the scroll bar to appear, but can't be used because the height must adjust to the size of the screen. */ 
 
    display: flex; 
 
    flex-direction: column; 
 
} 
 

 
.box-header { 
 
    background-color: green; 
 
    padding: 5px 10px; 
 
    color: white; 
 
} 
 

 
.box-content { 
 
    border: 3px solid blue; 
 
    padding: 5px; 
 
    padding-top: 10px; 
 
    overflow-y: scroll; 
 
}
<div id="wrap"> 
 
    <div class="container" style="border: 4px solid red"> 
 
    <div class="box-header"> Header in the B1 div.</div> 
 
    <div class="box-content"> 
 
     <p>line 1</p> 
 
     <p>line 2</p> 
 
     <p>line 3</p> 
 
     <p>line 4</p> 
 
     <p>line 5</p> 
 
     <p>line 6</p> 
 
     <p>line 7</p> 
 
     <p>line 8</p> 
 
     <p>line 9</p> 
 
     <p>line 10</p> 
 
     <p>line 11</p> 
 
     <p>line 12</p> 
 
     <p>line 13</p> 
 
     <p>line 14</p> 
 
     <p>line 15</p> 
 
     <p>line 16</p> 
 
     <p>line 17</p> 
 
     <p>line 18</p> 
 
     <p>line 19</p> 
 
    </div> 
 
    </div> 
 
</div>

+0

それは動作します!ブラウザウィンドウのサイズを変更したときに機能し、ヘッダテキストが複数の行にあるときにも機能しました。 – user3341576

+0

@ user3341576素晴らしい、フレックスはこのようなレイアウトで本当に素晴らしいです。 –

0

あなたは適切な(固定MAX-heigth)を追加する必要があります。例:

.box-content { 
    border: 3px solid blue; 
    overflow: auto; 
    padding: 5px; 
    padding-top: 10px; 
    max-height: 400px; 
} 

https://jsfiddle.net/motka53y/

+0

これを使用することができます私のために働かなかった。ブラウザのウィンドウを調整すると、コンテントdivがいくつかのサイズのためにコンテナーを超えていることがわかります。 – user3341576

0

私は、このようにそれを行うだろう。まず、オーバーフローを隠すことができるように、コンテナの幅を固定する必要があります。最大高さを90%から90%に変更する必要があります。オーバーフロー隠しプロパティを追加して、コンテナの外にオーバーフローした部分が隠されるようにする必要があります。ここで

は作業フィドルです:https://jsfiddle.net/5vswprfw/12/

は、これは私がCSSスタイルに変更するものである:

.container { 
    padding: 4px 3px; 
    margin: 0; 
    height: 90%; 
    overflow:hidden; 
    } 
+0

ありがとうございますが、ボックスの内容はコンテナの下に広がって隠れています。 – user3341576

+0

もう一度これは私のためには機能しませんでした。なぜ、ブラウザウィンドウのサイズを調整する必要があるのか​​を知るために、コンテンツがコンテナの底より下に広がっているのを発見しました。 – user3341576

+0

オーバーフローを設定した場合:hidden forコンテナはコンテナがそれを越えて伸びることはありません。 https://jsfiddle.net/5vswprfw/16/ – lhavCoder

関連する問題