1. CSS- Flex-Items1-1. flex-grow1-2. flex-shrink1-3. flex-basis1.4 flex1.5 order1.6 align-self1.7 요약 정리1.8 여백을 주는 방법 (gap , margin)
1. CSS- Flex-Items
1-1. flex-grow
default: 0
, 증가되는 너비의 비율을 나타내는 속성
- 0일 경우, 증가되는 너비 비율이 없기 때문에, item의 너비 그대로 가짐
- 1일 경우, 증가되는 너비 비율을
1:1:1 ...
로 가지게 됨
- item 마다 서로 다른 flex-grow를 지정해주어, 너비의 비율을 지정해줄 수 있음 (
1:2:1
)
주의사항
- Item의 width 전체크기에 대한 비중이 아니라, 기본 item의 너비를 제외한 부분을 해당 비율로 가져가는 것임
- Item의 전체 width를 기준으로 일정비율을 마추기 위해서는, item의 width를 지워주어 (default:auto)로 만들어주어 해결할 수 있다.

- flex-grow의 default값은 0이기 때문에, 다른 item들의 flex-grow를 지정하지 않은 상태에서, 하나의 item이 flex-grow가 1이상의 값만 가지면, 남은 모든 너비를 이 item이 가지게 된다.
1-2. flex-shrink
default: 1
, 요소의 감소 너비 비율을 나타내는 속성
flex-shrink: 0
의 경우 container의 너비가 작아진다면, item들이 줄어들지 않고, 크기를 유지하게 되어 튀어나가게 됨
- item1, item2, item3 있을 때, item2의 경우 크기를 고정되도록 하고 싶다면,
flex-shrink를 각각
1:0:1
로 지정한다. - item3을 훨씬 더 줄이고 싶다면
1:0:4
와 같이 비율조절이 가능하다.
1-3. flex-basis
default: auto
, 요소의 기본 너비를 지정하는 속성
default: auto
- 해당하는 요소의 width와 height를 사용하게 됨
flex-basis: 50px
- flex Item의 너비를 50px로 조정함
flex-basis: 0
을 통해, 현재 item의 가로너비를 무시함으로써, flex-grow의 비율에 따른 너비를 지정할 수 있다.
1.4 flex
flex-grow
,flex-shrink
,flex-basis
3가지 속성을 한 번에 작성하는 단축 속성
각각의
default 값 = 0 1 auto
;주의사항
- flex에서 flex-basis 값을 입력하지 않으면 default값인 auto가 아니라 0 을 사용하게 된다.
flex-basis:auto
: Item의 width를 제외하고 남은 공간을 비율대로 가져감flex-basis:0
: Item의 전체 너비를 기준으로 비율대로 가져감
- 개별 요소를 모두 작성하는 것을 권장!
1.5 order
default:0
, flex-Item들의 정렬 순서를 지정할 수 있다. 값이 클 수록 뒤쪽으로 배치하게 됨
order값은 음수도 가능하다.
- before

- After (
첫번째 Item의 order === 1
)

1.6 align-self
default: auto
, container에 적용되어 있는 align-items값을 상속받는다. align-items 속성을 하나의 줄 단위가 아닌, 개별 Item들에 대하여 레이아웃을 잡을 때 사용
- container의
align-items: flex-end
속성을 통해, 각각의 줄은 축의 끝 부분(아래)에 붙도록 정렬된 상태 - 1번째 Item값만을 축의 시작부분으로 올리고 싶다면,
align-self: flex-start;
로 개별지정하도록 함

1.7 요약 정리

- flex-grow
- default:0 , 증가너비 비율 속성
- flex-shrink
- default:1 , 감소너비 비율 속성
- flex-basis
- default:auto , Item의 기본 너비 값 지정 (auto는 지정된 width,height값 의미)
- flex의 주의 사항
- basis의 default값이 auto가 아닌 0이 할당됨 → 생략보다 다 같이 쓰는 것 권장
- order
- 값이 낮을 수록 앞에 위치하게 됨
- align-self
- 한 줄 별로 적용되는 align-items속성을 개별 아이템 단위로 적용할 수 있다.
1.8 여백을 주는 방법 (gap , margin)
gap 속성 을 통해 flex-Items간의 여백을 지정할 수 있다.
주의사항
- gap은 최신속성이기 때문에, 하위호환성을 고려해야한다.
- can I use 사이트에서 브라우저 호환성 고려할 수 있다.
margin
- item들에
margin-right
로 여백을 지정한 후,마지막 item
에margin-right: 0px
을 지정한다.