例を考えてみましょう。
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<style type="text/css">
html, body { height:100%; width:100%; padding:0; margin:0; }
body { overflow:scroll; }
#wrapper { background:#5f9ea0; width:500px; height:100%; min-height:100%; margin:0 auto; overflow:auto; }
#content { background:#336699; width:400px; height:100%; min-height:100%; margin:0 auto; overflow-x:hidden; position:relative;}
#info-block { background:#d2691e; width:300px; left:20px; position:absolute; }
</style>
</head>
<body>
<div id="wrapper">
<div id="content">
<div id="info-block">Info..<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>...End</div>
</div>
</div>
</body>
</html>
この例にはいくつかの問題があります。
- スクロールバーを。
#content
の代わりに間違った場所に配置しbody
ます。 - 、または適切な高さを計算しません
body
。の代わりに期待されます。(下のスクリーンショット)。#wrapper
#content
522px
227px
したがって、実際の問題は、#info-block
要素のコンテンツの高さを取得するためのページが必要なことです。設定が異なる場合がありますが、すべて失敗します。
動作する1つの解決策は、jQueryを使用して、の高さをの高さと比較し、それを、、および#info-block
に再帰的body
に適用することです。しかし、これは間違っています。CSSのみのソリューションを探しています。body
#wrapper
#content
そして、それはインタラクティブな水平アコーディオンの一部であるため、要素のposition:absolute
プロパティを取り除くことはできません。#info-block
前もって感謝します。