この簡略化した例では、本棚に本を置いた本棚を持っています。ブックケースは、定義された幅を持つ最も外側の要素です。本棚の本は、ラッピングなしで左から右に表示されるはずです。本棚は、その棚のすべての本を表示するために幅を伸ばすことになっています。すべての本棚は同じ幅、幅の広い本棚の幅にする必要があります。要素の親がオーバーフローした場合、要素の幅をその子要素に合わせて拡大します。
マイHTML:
<div class="bookcase">
<div class="bookshelf">
<div class="book">
<div class="book">
<div class="book">
</div>
<div class="bookshelf">
<div class="book">
<div class="book">
<div class="book">
<div class="book">
</div>
<div class="bookshelf">
<div class="book">
</div>
</div>
マイCSS:
.bookcase {
width: 40%;
height: 300px;
margin: 0 auto;
background: lightgrey;
overflow-x: auto;
}
.bookshelf {
background: lightgreen;
white-space: nowrap;
}
.book {
display: inline-block;
height: 60px;
width: 60px;
background: pink;
}
現在のコードに問題が本棚幅が最も長い本棚よりも小さい場合ということで、ブックシェルフはオーバーフローをスクロール可能にし、ブックシェルフ要素はすべてのブックに適合するように伸びません。現在のところ、棚は親の本棚と同じ幅を定義しているようです。
これらの図は、この問題を示しています。
または
しかし、本棚が狭い場合には、あなたが右にスクロールするとき、本棚緑の背景にはカットオフ、代わりのに達している:これは罰金である、本棚が通常どのように見えるかです最後の赤い本の右側:
がどのように私は本棚がオーバーフローした要素の全幅はなく、本棚の親コンテナの幅を取ることができますか?
私はすべてテーブルが嫌いだが、これはテーブルの仕事のように思える。 – Smeegs
私が提案できる唯一のことは、各 '.bookshelf'を' table-row'として表示することです:http://jsfiddle.net/qolami/gr9rg/4/ –
@HashemQolami 'table-row'は、 '.bookhelf'が最も広い' .bookshelf'よりも広いときには、破損しているように見えます。 – BigMacAttack