フレックスボックスの列を左右に揃える方法は?


121

典型的なCSSでは、2つの列の一方を左右に、もう一方の間隔を空けてフロートさせることができます。フレックスボックスでどうすればいいですか?

http://jsfiddle.net/1sp9jd32/

#container {
  width: 500px;
  border: solid 1px #000;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
}
#a {
  width: 20%;
  border: solid 1px #000;
}
#b {
  width: 20%;
  border: solid 1px #000;
  height: 200px;
}
<div id="container">
  <div id="a">
    a
  </div>
  <div id="b">
    b
  </div>
</div>

回答:


278

justify-content: space-between親要素に追加できます。そうすることで、子フレックスボックス項目は、それらの間にスペースを置いて反対側に配置されます。

更新された例

#container {
    width: 500px;
    border: solid 1px #000;
    display: flex;
    justify-content: space-between;
}


margin-left: auto2つ目の要素を右に揃えるために追加することもできます。

更新された例

#b {
    width: 20%;
    border: solid 1px #000;
    height: 200px;
    margin-left: auto;
}


4
こんにちは、margin-left: autoここで要素を正しく配置する方法を説明していただけますか?
hulkinBrain、2016年

2
@hulkinBrain、ここに説明があります:stackoverflow.com/a/33856609/3597276
マイケルベンジャミン

2
注:margin-left: automargin-right: autoトリックはまだそれをサポートするために持っている人のために、IE11の互換性はありません。
TetraDev 2017

30

私は結果を達成するために4つの方法を考え出しました。ここにデモがあります

方法1:

#a {
    margin-right: auto;
}

方法2:

#a {
    flex-grow: 1;
}

方法3:

#b {
    margin-left: auto;
}

方法4:

#container {
    justify-content: space-between;
}

9
方法5:flex:1;余分なスペースを必要な場所に追加の空の要素を挿入します:)
adamdport

jsfiddleにリンクする代わりにコードスニペットを埋め込んだ場合、これが最良の最も完全な答えになります。
スタイル

方法1と3はIE 11と互換性がありません!
PeterHøjlundAndersen

1

別のオプションはflex: auto、残りのスペースを埋めたいタグの間にスタイルのある別のタグを追加することです。

https://jsfiddle.net/tsey5qu4/

HTML:

<div class="parent">
  <div class="left">Left</div>
  <div class="fill-remaining-space"></div>
  <div class="right">Right</div>
</div>

CSS:

.fill-remaining-space {
  flex: auto;
}

これはflex:1 1 autoに相当し、主軸に沿って余分なスペースを吸収します。


0

さまざまな方法がありますが、最も簡単なのは、間にあるスペースを使用することです最後の例を参照してください

#container {    
    border: solid 1px #000;
    display: flex;    
    flex-direction: row;
    justify-content: space-between;
    padding: 10px;
    height: 50px;
}

.item {
    width: 20%;
    border: solid 1px #000;
    text-align: center;
}

例を見る

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.