表示されているのは正しい CSS の動作です。
たとえば、次の HMTL スニペットを考えてみましょう。
<div id="header"></div>
<div id="main-container"></div>
次の CSS を使用します。
body {
margin: 0;
}
#header {
width: 1000px;
margin: auto;
height: 164px;
background-color: yellow;
}
#main-container {
height: 278px;
background: pink url('http://placekitten.com/2000/278') top center no-repeat;
width: 100%;
}
デモを参照してください: http://jsfiddle.net/audetwebdesign/5xwRu/
幅が 1000px を超えるページの場合、ヘッダーは予想どおり中央に配置されます。
#main-container
の幅が 100%であるため、背景画像がページの幅いっぱいに表示されます。
ページ幅を 1000px 未満に縮小すると、固定幅のヘッダーが幅が広すぎてビュー ポートに収まらず、オーバーフロー状態が発生するため、水平スクロール バーが表示されます。
この状況では、CSS エンジンは、計算された幅が 1000 ピクセル未満であり、オーバーフロー コンテンツ用に作成されたスペースを含まないビュー ポートの幅 (1000 ピクセル未満) を満たすため、右側に空白を作成します#main-container
。#main-container
これはいくつかの方法で修正できますが、何をしたいかによって部分的に異なります。
次のように最小幅を設定できます。
#main-container {
height: 278px;
background: pink url('http://placekitten.com/2000/278') top center no-repeat;
width: 100%;
min-width: 1000px;
}
デモ フィドルの例 2 を参照してください。
注:overflow: hidden
CSS プロパティが適用されるラッパー コンテナーがある場合があります。この場合、水平スクロール バーが表示されないことがあります。