Flexbox sütunları sola ve sağa nasıl hizalanır?


123

Tipik CSS ile, aralarında biraz boşluk bırakarak iki sütundan birini sola ve diğerini sağa kaydırabilirim. Bunu flexbox ile nasıl yaparım?

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>

Yanıtlar:


279

justify-content: space-betweenAna öğeye ekleyebilirsiniz . Bunu yaparken, çocuk flexbox öğeleri, aralarında boşluk olacak şekilde zıt taraflara hizalanacaktır.

Güncellenmiş Örnek

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


margin-left: autoSağa hizalamak için ikinci öğeyi de ekleyebilirsiniz .

Güncellenmiş Örnek

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


4
Hey, margin-left: autoburayı kullanarak öğenin nasıl doğru hizalandığını açıklar mısınız?
hulkinBrain

2
@hulkinBrain, işte açıklama: stackoverflow.com/a/33856609/3597276
Michael Benjamin

2
NOT: margin-left: autove margin-right: autohile, hala onu desteklemek zorunda olanlar için IE11 uyumlu değildir.
TetraDev

30

Sonuçlara ulaşmak için 4 yöntem buldum. İşte demo

Yöntem 1:

#a {
    margin-right: auto;
}

Yöntem 2:

#a {
    flex-grow: 1;
}

Yöntem 3:

#b {
    margin-left: auto;
}

Yöntem 4:

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

9
Yöntem 5: flex:1;Fazladan boşluğun olmasını istediğiniz yere fazladan boş bir eleman ekleyin :)
adamdport

Jsfiddle'a bağlantı vermek yerine kod parçacığını katıştırırsanız, bu en iyi ve en eksiksiz yanıt olacaktır.
styfle

Yöntem 1 ve 3, IE 11 ile uyumlu değildir!
Peter Højlund Andersen

1

Diğer bir seçenek de flex: autoetiketlerinizin arasına kalan alanı doldurmak istediğiniz stilde başka bir etiket eklemektir .

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

Bu, ana eksen boyunca fazladan boşluk alan flex: 1 1 auto ile eşdeğerdir.


0

Farklı yollar vardır, ancak en basit olanı aradaki boşluğu kullanmaktır - sondaki örneğe bakın

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

örneğe bakın

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.