Flexbox는 모던 웹을 위하여 제안된 layout 방식이다.
Flexbox 레이아웃은 flex-container(부모요소) 와 flex-item(자식 요소들)로 구성된다.
Flexbox를 사용하기 위해서 HTML 부모 요소의 display 속성에 flex를 지정한다.
부모 요소가 inline 요소인 경우 inline-flex을 지정한다.
Flex 는 flex-container 속성과 flex-item 속성으로 나뉜다.
flex container 에 적용하는 속성
컨테이너를 플랙스 컨테이너로 만든다.
플랙스 컨테이너의 배치 축을 결정한다.
플랙스 컨테이너 안의 아이템의 줄바꿈을 지정한다. 즉, 컨테이너의 너비보다, item들 너비의 합이 클 경우, 아이템들이 줄바꿈 되는 것을 지정한다. nowrap 에 overflow: auto 를 지정하면 가로로 스크롤이 생긴다. 컨테이너를 넘치지 않게 된다.
flex-direction 과 flex-wrap 속성을 한 번에 지정한다.
justify-content
플랙스 컨테이너의 주축 방향으로 플랙스 아이템들의 배치를 결정한다.
플랙스 컨테이너의 주축의 반대에서, 플랙스 아이템들의 정렬을 지정한다.
wrap이 적용되어 multiline 인 경우에만 적용되며, 한 줄만 있는 상태에서는 효과를 보이지 않는다.
플랙스 아이템들 사이의 간격을 명시적으로 제어한다. 바깥쪽 가장자리에 있지 않은 항목 사이에만 간격을 적용한다. gap 은 Grid나 다중 열 레이아웃에서도 작동한다.
flex item 에 적용하는 속성
float, clear, vertical-align 속성은 flex item에 영향을 주지 않는다.
아이템의 배치 순서를 지정하는데, 배치의 순서는 컨테이너에 추가된 순서이다. 정수 값(음수 가능)으로 지정하며 기본 값은 0이다.
아이템의 너비에 대한 확대 인자를 지정한다. 양의 정수 값을 사용하며 기본 값은 0이다. 모든 아이템이 동일한 flex-grow 값이라면 동일한 너비를 갖는다. (flex-grow: 1)
아이템의 너비에 대한 축소 인자를 지정한다. 기본 값은 1이고 음수 값은 올 수 없다. 0을 지정하면 축소가 해제되어 원래의 너비를 유지한다. 컨테이너가 작아질 때 작동한다.
아이템의 너비 기본 값을 px 또는 %로 지정한다. 기본 값은 auto 이다.
flex-grow, flex-shrink, flex-basis 속성을 동시에 지정한다. 기본 값은 0 1 이다.
아이템 개별적으로 align-items 속성을 적용한다. 기본 값은 auto 이다.
auto, flex-start, flex-end, center, baseline, stretch
holly grail layout 하나의 방법
ETC
flexbugs
digitalocean-cheatsheets-flexbox
a-guide-to-flexbox poiemaweb.com/css3-flexbox studiomeal.com/archives/197