流動的な幅のコンテナ DIV があります。
この中には、すべて 300 ピクセル x 250 ピクセルの 4 つの DIV があります...
<div id="container">
<div class="box1"> </div>
<div class="box2"> </div>
<div class="box3"> </div>
<div class="box4"> </div>
</div>
私が実現したいのは、ボックス 1 を左にフロートし、ボックス 4 を右にフロートし、ボックス 2 と 3 をそれらの間で均等に間隔を空けることです。間隔も流動的にして、ブラウザーが小さくなるとスペースも小さくなるようにしたいと思います。
ベストアンサー1
見る: http://jsfiddle.net/thirtydot/EDp8R/
- これはIE6 以降およびすべての最新ブラウザで動作します。
- 作業しやすいように、ご要望の寸法を半分にしました。
text-align: justify
と組み合わさって.stretch
位置決めを処理します。display:inline-block; *display:inline; zoom:1
inline-block
IE6/7の修正、こちらをご覧ください。font-size: 0; line-height: 0
IE6 の小さな問題を修正しました。
#container {
border: 2px dashed #444;
height: 125px;
text-align: justify;
-ms-text-justify: distribute-all-lines;
text-justify: distribute-all-lines;
/* just for demo */
min-width: 612px;
}
.box1,
.box2,
.box3,
.box4 {
width: 150px;
height: 125px;
vertical-align: top;
display: inline-block;
*display: inline;
zoom: 1
}
.stretch {
width: 100%;
display: inline-block;
font-size: 0;
line-height: 0
}
.box1,
.box3 {
background: #ccc
}
.box2,
.box4 {
background: #0ff
}
<div id="container">
<div class="box1"></div>
<div class="box2"></div>
<div class="box3"></div>
<div class="box4"></div>
<span class="stretch"></span>
</div>
余分なspan
( .stretch
) は に置き換えることができます:after
。
これは、上記のソリューションと同じすべてのブラウザで機能します:after
。IE6 /7 では機能しませんが、distribute-all-lines
とにかく使用されているので問題ではありません。
見る: http://jsfiddle.net/thirtydot/EDp8R/3/
には小さな欠点があります:after
。最後の行を Safari で完璧に動作させるには、HTML 内の空白に注意する必要があります。
具体的には、これは機能しません:
<div id="container">
..
<div class="box3"></div>
<div class="box4"></div>
</div>
そして、これは次のようになります:
<div id="container">
..
<div class="box3"></div>
<div class="box4"></div></div>
これを任意の数の子クラスに適用するにdiv
は、boxN
次のように変更します。
.box1, .box2, .box3, .box4 { ...
に
#container > div { ...
これは、divの最初の子であるdivを選択し#container
、その下のdivは選択しません。背景色を一般化するには、CSS3 n次セレクタただし、IE9+ およびその他の最新ブラウザでのみサポートされています。
.box1, .box3 { ...
次のように変わります:
#container > div:nth-child(odd) { ...
見るここjsfiddle の例。