부모 박스 요소에 적용해서 자식 박스의 방향과 크기를 결정하는 레이아웃 구성 방법입니다.
Flexbox 속성들을 활용하면 요소의 정렬, 차지하는 공간을 설정해줄 수 있습니다.
flex-direction
flex-wrap
justify-content
align-items
- 자식 요소들을 축의 수직 방향으로 어떻게 정렬할 것인지 정합니다.
- justify-content와는 다르게 축의 수직 방향으로 어떻게 정렬할 것인지 정합니다.
- stretch, flex-start, flex-end, center, base-line
flex: grow shrink basis
grow(팽창 지수)
: 요소 크기 증가shrink(수축 지수)
: 요소 크기 감소basis(기본 크기)
: 크기가 늘어나거나 줄어드는 것과는 상관없이 기본크기가 얼마인지 설정flex: 0 1 auto;
flex-grow
, flex-shrink
, flex-basis
각각 따로 지정해줄 수도 있습니다.grow
정렬축 방향으로 빈 공간이 있으면 설정한 숫자에 따라 빈 공간을 나누어서 차지하는 것입니다.
1, 2, 3의 박스가 있을 때, 1의 grow가 1이고 나머지가 0이라면 1박스가 남는 공간을 전부 차지합니다.
1과 2의 grow가 1이고, 3이 0이라면 1과 2가 1:1비율로 공간을 나누어 가집니다.
전부 grow가 1이라면 세 박스가 1:1:1 비율로 공간을 나누어 가집니다.
shrink
grow와 반대로 설정한 비율만큼 박스 크기가 작아집니다.
그러나 웬만하면 grow속성을 통해 변화를 주는 것이 낫습니다.
왜냐하면 shrink속성은 width나 flex-basis 속성에 따른 비율이므로 실제 크기를 예측하기 힘들어지기 때문입니다.
basis
자식 요소가 grow나 shrink에 의해 변화되기 전의 기본 크기입니다.
flex-grow가 0일 때, basis 크기를 지정하면 basis로 지정한 크기는 유지됩니다.
flex-grow가 양수라면 늘어나면서 flex-basis 속성에 적용한 값보다 커질 수 있습니다.
basis가 0이라면 정해진 비율이 고정이 됩니다.
basis가 auto라면 내부 컨텐츠의 크기에 따라 비율이 변할 수 있습니다.
flex-basis와 width
두 속성을 200px로 설정한 경우 기본 설정에서는 똑같이 나오지만 정렬 축 방향이 변한다면 flex-basis쪽은 꽉 차게 되고, width쪽은 그대로입니다.
처음으로 되돌아간 상태에서 이미지를 300px을 삽입하면 flex-basis는 이미지가 꽉차지만 크기는 이미지에 맞춰서 변하는 반면 width쪽은 이미지가 넘치게 됩니다.
→ flex-basis가 좀 더 유연하게 작동합니다.