2019-7-20-CSS(3) - Flex

  • Flex는 수평이 될 요소들의 Container에 diplay: flex;를 적용한다.
  • flex는 2가지로 나뉜다. item들을 담는 container와 정렬하고 싶은 item.
  • item을 정렬하기 위해서는 container가 필수다.

Flex Container

  • flex container는 주축(main-axis)와 교차축(cross-axis)가 있다.
속성 의미
display Flex container를 정의
flex-flow flex-direction와 flex-warp의 단축속성
flex-direction flex items의 주축을 설정
flex-wrap flex items의 여러줄 묶음(줄바꿈)설정
justify-content 주축의 정렬 방법 설정
align-content 교차축의 정렬 방법을 설정(2줄이상)
align-items 교차축에서 items의 정렬 방법을 설정(1줄)

display

  • display속성으로 flex container정의한다. 보통은 display:block, inline-block, none을 많이사용.
  • display:flex, display:inline-flex 중에 쓴다.
  • flex : block요소와 같은 성향(수직 쌓임)을 가진다.
  • inline-flex : inline(inline block)같은 수평쌓임을 가진다.

flex-direction

  • items의 주축을 설정한다.
의미 기본값
row items를 수평축(왼쪽->오른쪽)으로 표시) row
row-reverse items를 row의 반대축표시  
column items를 수직축(위->아래)로 표시  
column-reverse items를 column의 반대축으로표시  

주축(main-axis)과 교차축(cross-axis)

  • flex-direction값이 row면 주축을 따라 가로로 요소들이 배치된다. column이면 세로로 쌓인다.
  • 주축과 교차축의 시작점과 끝점을 의미하는 flext-start, flex-end의 개념도 있다.

flex-wrap

  • items의 여러 줄 묶음(줄 바꿈)을 설정한다.

|값|의미|기본값| |-|-|-| |nowrap|모든 items를 여러줄로 묶지 않고 한줄로표시|nowrap |wrap|items를 여러줄로 묶음| |wrap-reverse|items를 wrap의 역방향으로 여러줄로 묶음

flex-wrap: 여러줄로묶음;
  • 기본적으로 items는 한줄에서만 표시된다. width, height를 무시하고 한줄에서 가변한다.
  • wrap을 통해 items를 줄바꿈한다.

justify-content

  • 주축의 정렬방법 설정
    justify-content: 정렬방법;
    

    |값|의미|기본값| |-|-|-| |flex-start|items를 시작점(flex-start)으로 정렬|flex-start| |flex-end|items를 끝점으로 정렬| |center|가운데 정렬| |space-between|시작은 item은 시작점에 마지막은 끝점에 나머지는 고르게 정렬됨| |space-around|items를 균등한 여백을 포함하여 정렬|

align-content

  • 교차축의 정렬방법을 설정
  • flex-wrap을 통해 items가 여러줄이고 여백이 있을때만 사용가능.
    align-center: 정렬방법
    

    |값|의미|기본값| |-|-|-| |stretch|container의 교차축을 채우기 위해 items를 늘림|stretch| |flex-start|시작점으로 정렬| |flex-end|끝점으로 정렬| |center|가운데정렬| |space-between|시작은 item은 시작점에 마지막은 끝점에 나머지는 고르게 정렬됨| |space-around|items를 균등한 여백을 포함하여 정렬|

align-items

  • 교차축에서 items의 정렬을 설정, items가 한줄인 경우 많이 사용
  • items가 flex-wrap을 통해 2줄이상이면 align-content가 우선적용
  • align-items를 사용하려면 align-content를 기본값으로 설정해야한다.
    align-items: 정렬방법;
    

    |값|의미|기본값| |-|-|-| |stretch|container의 교차축을 채우기 위해 items를 늘림|stretch| |flex-start|시작점으로 정렬| |flex-end|끝점으로 정렬| |center|가운데정렬| |baseline|item을 문자 기준선에 정렬|

Written on July 21, 2019