Flexbox 열을 왼쪽과 오른쪽으로 정렬하는 방법은 무엇입니까?


122

일반적인 CSS를 사용하면 두 개의 열 중 하나를 왼쪽과 오른쪽 사이에 약간의 간격을두고 부동 할 수 있습니다. 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>

답변:


278

justify-content: space-between부모 요소에 추가 할 수 있습니다 . 이렇게하면 자식 flexbox 항목이 그 사이에 공간을두고 반대쪽에 정렬됩니다.

업데이트 된 예

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


margin-left: auto오른쪽에 정렬하기 위해 두 번째 요소에 추가 할 수도 있습니다 .

업데이트 된 예

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


4
margin-left: auto여기 를 사용하여 요소가 올바르게 정렬되는 방법을 설명해 주 시겠습니까?
hulkinBrain

2
@hulkinBrain, 여기에 설명이 있습니다 : stackoverflow.com/a/33856609/3597276
Michael Benjamin

2
참고 : margin-left: automargin-right: auto트릭은 여전히 그것을 지원해야 사람들을위한 호환 IE11 아니다.
TetraDev

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에 연결하는 대신 코드 스 니펫을 삽입 한 경우 이것이 가장 좋고 가장 완전한 답변입니다.
styfle 2017

방법 1과 3은 IE 11과 호환되지 않습니다!
Peter Højlund Andersen

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.