Bagaimana cara menyelaraskan kolom flexbox ke kiri dan kanan?


123

Dengan CSS khas saya bisa mengapung satu dari dua kolom ke kiri dan kanan lainnya dengan beberapa ruang selokan di antaranya. Bagaimana saya melakukannya dengan flexbox?

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>

Jawaban:


279

Anda bisa menambahkan justify-content: space-betweenke elemen induk. Dengan demikian, item anak flexbox akan disejajarkan ke sisi berlawanan dengan spasi di antara mereka.

Contoh yang Diperbarui

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


Anda juga bisa menambahkan margin-left: autoelemen kedua untuk menyelaraskannya ke kanan.

Contoh yang Diperbarui

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


4
Hai, dapatkah Anda menjelaskan bagaimana elemen tersebut disejajarkan dengan benar menggunakan di margin-left: autosini?
hulkinBrain

2
@hulkinBrain, berikut penjelasannya: stackoverflow.com/a/33856609/3597276
Michael Benjamin

2
CATATAN: margin-left: autodan margin-right: autotrik IE11 tidak kompatibel, bagi mereka yang masih harus mendukungnya.
TetraDev

30

Saya menemukan 4 metode untuk mencapai hasil. Ini demo

Metode 1:

#a {
    margin-right: auto;
}

Metode 2:

#a {
    flex-grow: 1;
}

Metode 3:

#b {
    margin-left: auto;
}

Metode 4:

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

9
Metode 5: Masukkan elemen kosong ekstra di flex:1;mana pun Anda ingin ruang ekstra berada :)
adamdport

Ini akan menjadi jawaban terbaik dan terlengkap jika Anda menyematkan cuplikan kode alih-alih menautkan ke jsfiddle.
styfle

Metode 1 dan 3 tidak kompatibel dengan IE 11!
Peter Højlund Andersen

1

Pilihan lainnya adalah menambahkan tag lain dengan flex: autogaya di antara tag Anda yang ingin Anda isi di ruang yang tersisa.

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;
}

Ini sama dengan flex: 1 1 auto, yang menyerap ruang ekstra di sepanjang sumbu utama.


0

Ada beberapa cara berbeda tetapi yang paling sederhana adalah menggunakan spasi di antara, lihat contoh di bagian akhir

#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;
}

lihat contohnya

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.