私は同じ問題を抱えていましたが、私は上記のフレックスボックスで解決策を作ることができませんでした。だから私は自分自身のテンプレートを作成し、それが含まれています:
- 固定サイズの要素を持つヘッダ
- フッター
- 残りの高さを占めているスクロールバーとサイドバー
- コンテンツ
フレックスボックスを使用しましたが、プロパティだけを使用してより簡単な方法で表示しますフレックスとフレックス方向:行|:
私は角を使用しています。コンポーネントのサイズを親要素の100%にします。
重要なのは、サイズを制限するためにすべての親のサイズを(パーセントで)設定することです。次の例では、myappの高さはビューポートの100%です。
ヘッダーとフッターに5%があるため、メインコンポーネントのビューポートは90%です。 https://jsfiddle.net/abreneliere/mrjh6y2e/3
body{
margin: 0;
color: white;
height: 100%;
}
div#myapp
{
display: flex;
flex-direction: column;
background-color: red; /* <-- painful color for your eyes ! */
height: 100%; /* <-- if you remove this line, myapp has no limited height */
}
div#main /* parent div for sidebar and content */
{
display: flex;
width: 100%;
height: 90%;
}
div#header {
background-color: #333;
height: 5%;
}
div#footer {
background-color: #222;
height: 5%;
}
div#sidebar {
background-color: #666;
width: 20%;
overflow-y: auto;
}
div#content {
background-color: #888;
width: 80%;
overflow-y: auto;
}
div.fized_size_element {
background-color: #AAA;
display: block;
width: 100px;
height: 50px;
margin: 5px;
}
HTML::
<body>
<div id="myapp">
<div id="header">
HEADER
<div class="fized_size_element"></div>
</div>
<div id="main">
<div id="sidebar">
SIDEBAR
<div class="fized_size_element"></div>
<div class="fized_size_element"></div>
<div class="fized_size_element"></div>
<div class="fized_size_element"></div>
<div class="fized_size_element"></div>
<div class="fized_size_element"></div>
<div class="fized_size_element"></div>
<div class="fized_size_element"></div>
</div>
<div id="content">
CONTENT
</div>
</div>
<div id="footer">
FOOTER
</div>
</div>
</body>
私はここに私のテンプレートを掲載