display: flex;
를 자식 요소가 아닌 부모 요소에 적용해야 함을 이해한다.flex-direction
을 이용하여 요소를 정렬할 방향을 결정할 수 있다.justify-content
와align-items
를 이용하여 수평-수직 정렬을 결정할 수 있다.flex-grow
를 이용하여 요소를 얼마나 늘릴 것인지 결정할 수 있다.flex-basis
를 이용하여 요소의 기본 크기를 결정할 수 있다.- VSCode의 레이아웃을 Flexbox를 이용하여 구현할 수 있다.
Flexbox로 레이아웃을 구성한다는 것은, 박스를 유연하게 늘리거나 줄여 레이아웃을 잡는 방법
display: flex
는 부모 박스 요소에 적용해, 자식 박스의 방향과 크기를 결정하는 레이아웃 구성 방법부모 요소에 적용해야 하는 속성: 자식 요소들의 정렬
flex-direction
: 정렬 축 정하기자식 요소들을 정렬할 정렬 축을 정함. 아무 설정도 해주지 않으면 기본적으로 가로 정렬
flex-wrap
: 줄 바꿈 설정하기 하위 요소들의 크기가 상위 요소의 크기를 넘으면 자동 줄 바꿈을 할 것인지! 아무 설정도 해주지 않으면 줄 바꿈X
justify-content
: 축 수평 방향 정렬자식 요소들을 축의 수평 방향으로 어떻게 정렬할 지 정함
flex-start
, flex-end
, center
, space-between
, space-around
align-items
: 축 수직 방향 정렬자식 요소들을 축의 수직 방향으로 어떻게 정렬할 지 정함
stretch
, flex-start
, flex-end
, center
, baseline
자식 요소 적용 속성 flex: 요소가 차지하는 공간
flex: <grow(팽창 지수)> <shrink(수축 지수)> <basis(기본 크기)>
따로 flex 값을 설정해 주지 않으면, 기본값은 아래와 같다.
flex: 0 1 auto;
세 지수를 위 처럼 한번에 지정하지 않고, 각각 지정도 가능!
grow
요소의 크기가 늘어나야 할 때 얼마나 늘어날 것인지를 의미
각 자식 요소들이 얼마나 늘어나서 남는 공간을 차지할 것인지 비율을 정하는 것이다. 즉,
shrink
비율로 레이아웃을 지정할 경우에는 grow 속성을 이용하자.
WHY? ➡ flex-shrink 속성은 실제 크기를 예측하기가 어렵기 때문flex-grow 속성으로 비율을 변경하는 경우, flex-shrink 속성은 기본값인 1로 두어도 무방.
basis
자식 박스가 flex-grow
나 flex-shrink
에 의해 늘어나거나 줄어들기 전에 가지는 기본 크기
flex-grow 가 0일 때, basis 크기를 지정하면 그 크기는 유지
(flex-grow 속성의 값이 양수일 경우, 늘어나면서 flex-basis 속성에 적용한 값보다 커질 수도 있다)
TIP
- width와 flex-basis를 동시에 적용하는 경우, flex-basis가 우선!
- 콘텐츠가 많아 자식 박스가 넘치는 경우, width가 정확한 크기를 보장하지 않는다.
- (flex-basis를 사용하지 않는다면) 콘텐츠가 많아 자식 박스가 넘치는 경우를 대비해, width 대신 max-width를 쓸 수 있다