等間隔の DIV による流動的な幅 質問する

等間隔の DIV による流動的な幅 質問する

流動的な幅のコンテナ 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:1inline-blockIE6/7の修正、こちらをご覧ください
  • font-size: 0; line-height: 0IE6 の小さな問題を修正しました。

#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 の例。

おすすめ記事