これが私のフィドルです:http://jsfiddle.net/34TM4/1/
ご覧のとおり、赤div
の幅は 100% です。青div
の幅は 800px です。右にスクロールして残りの 800px div を表示すると、100% div が停止していることがわかります...
幅100%に設定していますが、必ずしもスクロールに追従するとは限りません。何故ですか?これを機能させる方法はありますか?スクロールしても、常に画面の 100% を埋める 100% の幅を使用しますか?
これが私のフィドルです:http://jsfiddle.net/34TM4/1/
ご覧のとおり、赤div
の幅は 100% です。青div
の幅は 800px です。右にスクロールして残りの 800px div を表示すると、100% div が停止していることがわかります...
幅100%に設定していますが、必ずしもスクロールに追従するとは限りません。何故ですか?これを機能させる方法はありますか?スクロールしても、常に画面の 100% を埋める 100% の幅を使用しますか?
これは、要素の親が何であれ、100% が幅の 100% として定義されるためです。この場合、親要素がないため、ウィンドウ (フレーム) が親になります。したがって、他の要素がウィンドウの幅よりも広い場合でも、100% がウィンドウの幅になります。
両方の div を別の div でラップし、その新しいコンテナ div の幅を 800px にすると、100% の div は 800 ピクセルに拡張されます。
右にスクロールして残りの 800px div を表示すると、100% div が停止していることがわかります...
幅をパーセンテージとして設定すると、親要素のそのパーセンテージに適応することを意味します。の場合div#container
、ビューポートの幅に適応するため#container
、右にスクロールすると停止します。
この問題を解決するには、 を の と等しくなるように設定min-width
しcontainer
ますdiv#test
。
#container {
width: 100%;
height: 30px;
background: #d45;
min-width: 800px
}
JS フィドル: http://jsfiddle.net/34TM4/6/
パーセンテージ幅は、要素を含むブロックを参照します。最初の包含ブロックはビューポートです。100% 要素の包含ブロックをビューポート以外のものにする必要があります。これを実現するには、100% 要素を非パーセンテージ幅要素内に入れ子にします。たとえば、フィドルを次のように変更します。
<div id="blam">
<div id="container"></div>
<div id="test"></div>
</div>
#blam
{
width: 900px;
}
それを解決する最も簡単な方法はmin-width: 800px
、次のようにプロパティを追加することです: http://jsfiddle.net/34TM4/2/