私のアプリケーションには次の構造があります。
<div id="container">
<div id="child_container">
<div class="child"></div>
<div class="child"></div>
...
<div class="child"></div>
</div>
</div>
各子divには既知の固定幅がありますが、アプリケーションでは、それらの多くをchild_container divに挿入できます。
私がやろうとしていることは、子コンテナの合計幅を考慮して、必要なときにコンテナdivを水平に拡張することです。
これは現在何が起こるかです:
+------ container -------+
+--- child_container ----+
| child1 child2 child3 |
| child4 |
+------------------------+
Child_container divの幅を固定値に設定すると、コンテナdivを超えて水平方向に拡張することができます。
+------ container -------+
+------ child_container -+----+
| child1 child2 child3 child4 |
+------------------------+----+
ただし、新しい子が追加されるたびに再計算する必要があります。
最終結果が次のようになるように、子コンテナの固定幅を使用せずにこれを行う方法はありますか
+--------- container ---------+
+------ child_container ------+
| child1 child2 child3 child4 |
+-----------------------------+
ありがとう。
このような何かが動作するはずです:
#container, #child_container, .child {
position: relative;
float: left;
}
さらに簡単:
<style>
#container{ display: inline-block; }
</style>
子要素が追加されても、親コンテナは成長しません。
+------ container -------+
+--- child_container ----+
| child1 child2 child3 |
| child4 |
+------------------------+
ただし、css3フレックスボックスを使用することで、次の行で新しいレンダリングを回避できます。サンプルは以下に記載されています path
.products{
display: -webkit-flex;
-webkit-flex-flow: row;
/*-webkit-justify-content: center;*/
}
.products > div{
padding: 0 4em;
}
結果は次のようになります。
+--- child_container ----+|
| child1 child2 child3 ch|ild4 child5
| |
+------------------------+
含まれているdivを含む残りすべてをフロートすると、機能します。
今日の最新のソリューションは
#child_container {
display: flex;
}
なぜならflex-wrap
はデフォルトで
flex-wrap: nowrap;
このシンプルなソリューションは魅力のように機能します。そして今では、関連するすべてのブラウザでも。