次のようにして、必要な効果を得ることができます。
HTML スニペットはそのままで問題ありません:
<div id="content">
<section>
<h1>Heading 1</h1>
<p>...</p>
</section>
<section>
<h1>Heading 2</h1>
<p>...</p>
</section>
</div>
CSSは優れていますが、説明が必要です。
#content {
overflow: visible; /* default, but important to notice */
}
section {
float: left;
width: 25%;
}
h1 {
position: fixed;
width: 25%;
background: #00FF00;
text-align: center;
}
およびデモ フィドル: http://jsfiddle.net/audetwebdesign/4zLMq/
仕組み
ブロックは、 200px#content
の左フローティング サイドバーの右側の残りの幅を占有します。
内には、親コンテナーの 25% (この場合はビューポート パネルの幅) を占める #content
2 つの左フローティング要素があります。section
子h1
要素には がposition: fixed
あります。つまり、25% の幅もビューポートの幅に基づいて計算されます (ではありません#content
)。
ケース 1同じ幅にし
たい場合 は、同じ包含ブロック (この場合はビュー ポート) から計算された同じ相対値 (25%) が必要です。h1
#content
ただし、25% という値は、フローティング サイドバーを考慮した後の残りのスペースの 25% ではありません。しかし、多分あなたはこれと一緒に暮らすことができます。
ケース 2
サイドバーの幅を相対的な値に設定すると、幅の値を判断しやすくなります。混合単位の使用は常に問題です。