たくさんのコンテンツを含む div があり、幅を親要素の 100% に設定しようとしています。この div もパディングを使用しているため、幅を auto に設定する必要があると考えました。しかし、何らかの理由で、常に親の幅を超えて拡張されます。スクロールするように設定されたオーバーフローさえあります。
私が欲しいのは、divにスクロールバー(水平のみ)を持たせ、その幅を親の幅に合わせることです。
これを修正する方法を知っている人はいますか?
親の幅 100%、パディングあり:
あなたが言及したパディングが100%幅の要素に適用されていることを考えると、問題はブラウザが使用するボックスモデル内にあります. 100% の幅といくらかのパディングを適用すると、要素はwidth + padding
完全な幅になるため、要素が大きくなりすぎます。これを解決するには、いくつかの方法があります。
CSS3 は、 と呼ばれる新しいプロパティを導入box-sizing
します。これを に設定するとborder-box
、幅に追加して要素が「大きく」なるのではなく、要素の指定された幅内にパディングが追加されます。(古いブラウザではサポートされていないことに注意してください)。
left: 0; right: 0;
を使用する代わりに使用できると思いますwidth: 100%;
。その場合、要素が広くなることなく、パディングを追加できます。
実際の2番目のオプション:
<!-- The markup -->
<div class="parent">
<div class="child">Child</div>
</div>
/* The CSS */
.parent {
width: 200px;
height: 200px;
position: relative;
background-color: #666;
}
.child {
position: absolute;
left: 0;
right: 0;
padding: 10px;
background-color: #888;
}
2 番目のオプションの実際の例を次に示します: http://jsfiddle.net/mGLRD/
水平スクロールバー:
水平スクロール バーを取得するには、overflow-x
CSS プロパティを調べる必要があります。に設定するとscroll
、スクロールするコンテンツがない場合に無効なスクロールバーが表示されるため、スクロールバーは常に表示されます。他のオプションはauto
、必要に応じてスクロールバーが表示されるように設定することです (ブラウザによって異なる場合があります)。
試す:
div#content {
width:auto;
padding:20px;
overflow-x:auto;
}
私のデモを参照してください: http://jsfiddle.net/HRRsU/3/