CSS Flexbox



오늘은 전체적인 Layout을 정하는데 사용되는 Flexbox에 대해 작성해보도록 하겠다.


CSS Flexbox 개념


지난 글에서 Position은 좀 더 작은 영역에서 요소를 배치하는 방법이었다. 반면에 이번 글에서 다룰 Flexbox라는 개념은 큰 범위에서 요소들을 배치하는 방법이다.


Flexbox행과 열 단위로 요소들정렬하고 배치하는 방법을 말한다.


이러한 Flexbox를 구성하는 요소는 3가지만 기억하면 된다. containeritem 그리고 axis다.


Flexbox는 부모 container가 자식 item에 대해 정렬 및 배치하는 명령을 내리게 되고, 이때 axis(축)에 따라 배치가 이뤄진다.


[flex container 및 flex item]


속성에 display: flex; 라고 입력하면 부모 요소는 flex container가 된다. 그리고 1차 자식 요소들은 자동으로 flex item이 된다.


[ main axis와 cross axis]


flex item 들이 배치되는 기본 축‘main axis’라고 한다. 기본값으로 ‘왼쪽에서 오른쪽’으로 축 방향이 설정되어 있다.


한편 main axis과 교차하는 축‘cross axis’라고 한다. 기본값으로 ‘위에서 아래로’ 축 방향이 설정되어 있다.


이러한 main axis과 cross axis는 사용자가 설정하는 대로 얼마든지 달라질 수 있다.

Flexbox 속성들


flex-direction


flex-direction은 flex-item들이 배치되는 방향을 설정한다.

  • flex-direction: row
CSS Flexbox
CSS Flexbox


기본 값이다. 따로 설정 안해도 되고, 왼쪽-> 오른쪽으로 배치되는 걸 볼 수 있다.

  • flex-direction: row-reverse;
CSS Flexbox


배치되는 방향이 우-> 좌로 바뀌는 것을 볼 수 있다.

  • flex-direction: column;
CSS Flexbox


메인 축(main axis)이 이제는 수직 방향(위->아래)로 바뀐다.

  • flex-direction: column-reverse;
CSS Flexbox


메인 축이 이제는 아래에서 위라는 것을 알 수 있다.

flex-wrap


flex-wrap은 flex-container 안에 flex-item들이 다 못 들어가게 됐을 때, 새로운 행으로 보낼지 말지를 결정하는 속성이다.

CSS Flexbox
  • flex-wrap: nowrap; =>기본값이다.
  • flex-wrap: wrap; => 다 못담으면 다음 행으로 보내준다.



justify-content


justify-content는 main axis를 따라 flex item들을 배치하는 것이다.

  • justify-content: flex-start; => 주축 첫번째로 오도록 배치
CSS Flexbox
  • justify-content: center; => 주축의 가운데 오도록 배치
  • justify-content: flex-end; => 주축 마지막에 오도록 배치



align-content


align-content는 cross axis(교차축)을 따라 flex item들을 배치하는 것이다. 이때 flex-wrap:wrap;으로 설정된 상태에서만 적용된다.

즉, 여러 줄을 교차축에 따라 배치하는 개념이다.

CSS Flexbox
  • align-content: center; => 교차축에 따라 가운데 배치
CSS Flexbox
  • align-content: flex-end; => 교차축에 따라 마지막에 배치
  • align-content: flex-start; => 교차축에 따라 처음에 배치



align-items


위에서 align-content가 wrap이 적용된 상태에서 교차축에 따라 여러 줄에서 적용된다면, align-items는 하나의 줄에 대해 적용되는 개념이다.

CSS Flexbox
  • align-items: center; => 가운데 정렬됨.
  • align-items: flex-end; => 교차축 끝으로 배치됨.



align-self


지금까지는 flex container에서 전체적인 item들에 대해 배치가 이뤄졌다면, align-self 이후부터는 개별적인 요소에 대해 코드 작성 및 배치가 이뤄진다.

align-self는 개별 자식 flex item에 대해 배치를 할 수 있도록 한다.

CSS Flexbox
  • align-self: flex-start; => 교차축 시작 위치에 배치
  • align-self: center; => 교차축 중앙에 배치



flex-grow


flex-grow는 빈 공간이 있을 때, 비율에 따라 flex item들에게 추가 배분해주는 것이다.

flex-grow:1; 이런 식으로 넣어주면 된다.

CSS Flexbox


위 사진은 flex-grow를 각각 3, 2, 1 넣어준 결과다. 빈 공간에 대해 추가배분한 것이므로, 각 item의 크기가 3:2:1이 되지 않는다는 것을 알 수 있다.

flex-basis


flex-basis는 각 item에 작성되어 item의 초기 크기를 지정해 주는 것이다.

CSS Flexbox
CSS Flexbox

CATEGORIES:

Tags:

No Responses

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다