height: 100%
あなたが望むように機能することは決してありません。CSS 仕様では、ブラウザー ウィンドウの高さ、または絶対高さが指定された最も近い親ブロック レベル要素と同じ高さにする必要があると規定されています。つまり、このコードは 期待どおりに動作しないはずです。
<!DOCTYPE html>
<html>
<head>
<title>Want the body to fill the page? Too bad!</title>
<style type="text/css">
html, body {
height: 100%;
}
.page {
padding-top: 50px;
box-sizing: border-box;
height: 100%;
}
.header {
margin-top: -50px;
height: 50px;
}
.body {
height: 100%;
background: gray;
}
</style>
</head>
<body>
<div class="page">
<div class="header">
<h1>Too bad!</h1>
</div>
<div class="body">
<p>Hello cruel world...</p>
</div>
</div>
</body>
</html>
ただし、Chrome では問題なく動作します。なんで?この場合、標準は意味をなさないため、Google が具体的に Web 標準に反することを決定したとしか考えられません。ブラウザー ウィンドウの正確な高さを求める必要があるのはなぜですか? 唯一の場合は、ページ全体をラップすることです。この場合、単純な「高さは親ブロックに相対的」というルールは、他の場所で期待を裏切ることなくうまく機能します。<div>
ただし、これを回避する方法があります。少なくとも、これを Firefox でも試す前に言いたかったことです。取得する別の方法height: 100%
(いくつかの制限があります) は、 を使用することposition: absolute
です。position: relative
しかし、Firefox はある要素を尊重していないように思わdisplay: table-cell
れます。おそらく、これらの厄介な標準も同様です。興味がある場合は、この手法のコードを次に示します。
#wrapper > div > #middleleft {
position: relative;
}
.scroll-pane {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
それで、あなたは何ができますか?残念ながら、私はまだその答えを知りません。厄介な解決策は、Javascript で高さを絶対ピクセル値に設定し、その高さを更新するためにウィンドウのサイズ変更にイベントをアタッチすることです。良い方法を見つけたらまた連絡します。