2017-04-02 1 views
0

フレックスボックスの子が成長する代わりにスクロールバーを持つようにするには、固定高さのコンテナをとります。隔離された環境で作成する 簡単:コンテナがページの100%を占めることなく、フレックスボックスの中間部分をスクロールします。

https://jsfiddle.net/1yjk5ojp/

#container { 
    height: 100%; 
    display: flex; 
    flex: 0 0 auto; 
    flex-flow: column; 
} 

#list { 
    display: flex; 
    flex-flow: column; 
    overflow: auto; 
} 
しかし、のは、私はページのヘッダーを使用したいとしましょう。 正確なサイズはわからないので、私はmerginでabosluteの位置を使用することはできません。 途中でフレックスコンポーネントを使用することもできません。固定サイズでなければなりません。例えば

は - 100pxにヘッダ

<div style="height: 100px;"> 
    <h1>Page header</h1> 
</div> 

https://jsfiddle.net/z6dsq822/1/

iは、未知のサイズの部品の後に固定の高さの部品を作るために何かできることがある追加しましたか?

私の制約は、私は別のスクロールバーを望んでいないということである、と私はヘッダは、この構造の外側になりたい(それは異なる見解を持つ大規模なアプリケーションの、ヘッダがテンプレートである)

+0

「それはサイズが固定されている必要がありますcuzを私はまた、道に沿って任意のフレックスコンポーネントを使用することはできません。」どういう意味ですか?ヘッダーをフレックスレイアウトと固定サイズの一部にすることができます。 –

+0

これは? https://jsfiddle.net/z6dsq822/2/ –

+0

ヘッダーはテンプレートの一部で、質問に追加されました – TheAnosmic

答えて

0

親を作りますコンテナすべてflexcolumn#containerflex-grow: 1に設定して、使用可能な領域を占めるようにしてください。

* { 
 
    box-sizing: border-box; 
 
    padding: 0; 
 
    margin: 0; 
 
} 
 

 
html, 
 
body { 
 
    height: 100vh; 
 
} 
 

 
body { 
 
    display: flex; 
 
    flex-direction: column; 
 
} 
 

 
header { 
 
    flex: 0 0 100px; 
 
} 
 

 
#container { 
 
    display: flex; 
 
    flex-direction: column; 
 
    flex-grow: 1; 
 
    overflow: auto; 
 
} 
 

 
#list { 
 
    display: flex; 
 
    overflow: scroll; 
 
    flex-direction: column; 
 
    flex-grow: 1; 
 
} 
 

 
#top { 
 
    flex: 0 0 20px; 
 
    background-color: #db9277; 
 
} 
 

 
#bottom { 
 
    flex: 0 0 20px; 
 
    background-color: #db9277; 
 
} 
 

 
.row { 
 
    height: 100px; 
 
    background-color: #85d8d5; 
 
}
<header> 
 
    header 
 
</header> 
 
<div id="container"> 
 
    <div id="top"></div> 
 
    <div id="list"> 
 
    <div class="row">Lorem ipsum dolor sit amet.</div> 
 
    <div class="row">Lorem ipsum dolor sit amet.</div> 
 
    <div class="row">Lorem ipsum dolor sit amet.</div> 
 
    <div class="row">Lorem ipsum dolor sit amet.</div> 
 
    <div class="row">Lorem ipsum dolor sit amet.</div> 
 
    <div class="row">Lorem ipsum dolor sit amet.</div> 
 
    <div class="row">Lorem ipsum dolor sit amet.</div> 
 
    <div class="row">Lorem ipsum dolor sit amet.</div> 
 
    <div class="row">Lorem ipsum dolor sit amet.</div> 
 
    <div class="row">Lorem ipsum dolor sit amet.</div> 
 
    <div class="row">Lorem ipsum dolor sit amet.</div> 
 
    <div class="row">Lorem ipsum dolor sit amet.</div> 
 
    <div class="row">Lorem ipsum dolor sit amet.</div> 
 
    <div class="row">Lorem ipsum dolor sit amet.</div> 
 
    <div class="row">Lorem ipsum dolor sit amet.</div> 
 
    <div class="row">Lorem ipsum dolor sit amet.</div> 
 
    <div class="row">Lorem ipsum dolor sit amet.</div> 
 
    <div class="row">Lorem ipsum dolor sit amet.</div> 
 
    <div class="row">Lorem ipsum dolor sit amet.</div> 
 
    <div class="row">Lorem ipsum dolor sit amet.</div> 
 
    <div class="row">Lorem ipsum dolor sit amet.</div> 
 
    <div class="row">Lorem ipsum dolor sit amet.</div> 
 
    <div class="row">Lorem ipsum dolor sit amet.</div> 
 
    <div class="row">Lorem ipsum dolor sit amet.</div> 
 
    <div class="row">Lorem ipsum dolor sit amet.</div> 
 
    <div class="row">Lorem ipsum dolor sit amet.</div> 
 
    <div class="row">Lorem ipsum dolor sit amet.</div> 
 
    <div class="row">Lorem ipsum dolor sit amet.</div> 
 
    <div class="row">Lorem ipsum dolor sit amet.</div> 
 
    <div class="row">Lorem ipsum dolor sit amet.</div> 
 
    <div class="row">Lorem ipsum dolor sit amet.</div> 
 
    <div class="row">Lorem ipsum dolor sit amet.</div> 
 
    <div class="row">Lorem ipsum dolor sit amet.</div> 
 
    <div class="row">Lorem ipsum dolor sit amet.</div> 
 
    </div> 
 
    <div id="bottom"></div> 
 
</div>

+0

これは別のスクロールバーを表示します – TheAnosmic

+0

@TheAnosmic私はあなたの最終目標を理解してはいけません。 「別のスクロールバー」はどういう意味ですか?コンテンツ用のスクロールバーは1つだけです。私はあなたが窓の高さに制約されたものすべてを望んだと思った?要素がウィンドウの高さに含まれている場合は、スクロールバーが必要になるか、オーバーフローで隠すことができます。スクロールバーをまったく必要としない場合は、あなたの例から 'height:100%'を削除するだけです。 –

+0

firefoxを使用して: 100pxのヘッダーを取得すると、本文が100%となるコンテナが取得され、ページは100%+ 100pxになり、ページ全体で別のスクロールバーが表示されます。 クロムを使用: 実際には高さが正しく表示されますが、ページ全体のスクロールバーはまだ削除されています。クロムは意図された動作ですが、どちらが「正しい」か分かりません。 [リンク](http://i66.tinypic.com/vymqzl.png) – TheAnosmic

関連する問題