前にフレキシボックスを使ったことがありませんか?私のために、それはあなたのCodepenでうまく動作しています。または、ピンクの背景(大画面で黒い部分が見えます)が問題ですか?
1つのアドバイス、おそらくあなたの解決策はありません。 レイアウトを定義するのにFlexboxが使用されています。あなたは身体に屈曲方向を与えていることがわかります:行、いくつかの要素に一定の高さを与えます。
flex: 0 0 40px;
結果は同じですが、それは少しバグや将来の奇妙な行動を防ぐことができます: 代わり
.bottom {
height: 40px;
}
を使用しての私が使用することをお勧めします。あなたのdivクラス= topにも同じことが起こります。
あなたの問題については、は、次のことを試してください。
body {
display: flex;
flex-direction: column;
}
.top {
flex: 0 0 40px;
}
.content {
flex: 1;
overflow-y: scroll;
}
.bottom {
flex: 0 0 40px;
}
あなた.top、.bottomと.contentは、あなたのHTML内のみと直接の子であることを確認してください。さもなければ、これは動作しません。
このようにして、上部と下部のバーが固定され、コンテンツが間にスペースを埋めるようになります。
EDIT: 垂直<div class="content">
内のコンテンツを整列するには、あなたはあなたのCSSにこれを追加する必要があります。 (上のコードに沿って)
.content {
flex: 1;
overflow-y: scroll; //only if you want fixed footer
display: flex;
flex-direction: row; //column should also do fine, since you only have one child element
justify-content: center;
align-items: center;
}
.content-inner { //the only and direct child of content
margin: auto;
}
[Safariを除くすべてのブラウザで動作するFlexboxコード。なぜですか?](http://stackoverflow.com/a/35137869/3597276) –