정의 및 사용 방법
꼭 알아두세요!
flex-grow 속성은 플렉스 아이템의 '주축 방향의 크기'를 결정하는 구성 속성 중 하나입니다.
구성 속성에는 flex-grow를 포함하여 flex-basis, flex-shrink가 있습니다. 이 속성들이 함께 작동하여 최종 주축 방향의 크기를 결정한다는 것을 알아야 합니다.
주축 방향의 크기란
플렉스 컨테이너(부모)의 flex-direction 속성으로 지정된 플렉스 아이템의 배치 방향이 '가로 축'일 때는 너비를, '세로 축'일 때는 높이를 말합니다.
flex-basis 속성으로 설정한 기준 크기를 바탕으로,
플렉스 컨테이너(부모)에 남는 공간은 flex-grow 속성의 설정에 따라 플렉스 아이템이 얼마나 커질지 제어하고, 공간이 부족할 경우에는 flex-shrink 속성의 설정에 따라 플렉스 아이템이 얼마나 축소될지 제어합니다.
브라우저는 먼저 플렉스 아이템들의 flex-basis 값을 합산하여 플렉스 컨테이너(부모) 내의 남는 공간을 파악합니다.
남는 공간이 있다면, 플렉스 아이템들은 각각 flex-grow 속성의 설정 값에 따라 비율대로 나누어 크기를 키우거나 그대로 둘지를 결정합니다.
기본 예제
이 속성은 개별 플렉스 아이템에 해당하는 요소에 지정해야 합니다.
부연 설명
<div class="flex-container">
<div class="item item-1">flex-grow: 1</div>
<div class="item item-2">flex-grow: <!-- value --></div>
<div class="item item-3">flex-grow: 1</div>
</div>
그 다음 아래의 CSS 코드 블록처럼 .flex-container를 플렉스 컨테이너로 지정하고, flex-direction 속성의 값을 row로 설정하여 플렉스 아이템의 배치 방향이 '가로 축'이 되도록 했습니다. 이렇게 하면, flex-basis로 설정하는 플렉스 아이템의 주축 방향의 크기 기준은 너비가 됩니다.
.flex-container { /* 플렉스 컨테이너 */
display: flex;
border: 4px dashed silver;
flex-direction: row; /* 플렉스 아이템의 배치 방향이 '가로 축'이므로
플렉스 아이템의 주축 방향의 크기는 너비임 */
}
.item { /* 플렉스 아이템 */
flex-basis: 50px; /* 모든 플렉스 아이템의 너비 기준을 50px로 한다는 뜻 */
flex-shrink: 1; /* 플렉스 컨테이너(부모)의 공간이 부족할 경우
플렉스 아이템들이 부족한 공간만큼의 크기를 나누어 축소될 때
해당 플렉스 아이템이 축소될 비율 값을 1로 설정한다는 뜻 */
}
.item-1, .item-3 {
border: 4px solid gray;
background-color: silver;
flex-grow: 1; /* 플렉스 컨테이너(부모)의 공간이 남을 경우
플렉스 아이템들이 남는 공간만큼의 크기를 나누어 커질 때
해당 플렉스 아이템이 커질 비율 값을 1로 설정한다는 뜻 */
}
.item-2 {
border: 4px solid red;
background-color: yellow;
flex-grow: /* value <= 라이브 데모에서 동적으로 구현
값 변경에 따라 남는 공간 배분 비율이 달라짐 */
}
플렉스 아이템의 주축 방향의 크기는 flex-basis, flex-grow, flex-shrink 속성이 함께 작동하여 최종 크기를 결정합니다.
이 예제에서는 모든 플렉스 아이템에 flex-basis: 50px과 flex-shrink: 1을 지정했습니다.
특징
형식 구문
selector {
flex-grow: <number>
/* <number>: 0 이상의 숫자(음수 불가, 소수점 가능) */
}
구문
/* <number> 값 */
flex-grow: 0; /* 초깃값 */
flex-grow: 0.5;
flex-grow: 0.62;
flex-grow: 1;
flex-grow: 1.6;
flex-grow: 2;
flex-grow: 4.3;
/* 글로벌 값 */
flex-grow: inherit;
flex-grow: initial;
flex-grow: revert;
flex-grow: revert-layer;
flex-grow: unset;
값
숫자를 값으로 사용할 수 있습니다.
0 이상의 실수(정수와 소수점 가능)를 사용합니다. 음수 값은 유효하지 않습니다.
초깃값은 0입니다.
flex-grow: 0의 의미
즉, 해당 플렉스 아이템은 크기를 키우는 비율에 포함시키지 않는다는 의미로, 남는 공간이 있더라도 크기를 키우지 않고 그대로 둔다는 의미와 동일합니다.
flex-grow 속성 값에 대한 제약 조건
- 주축 방향이 '가로 축'이면
- 주축 방향이 '세로 축'이면
-
min-height가 설정되어 있는 경우 -
max-height가 설정되어 있는 경우
-
flex-basis값이auto로 설정되어 있고aspect-ratio가 설정되어 있는 경우
형식 정의
| 초깃값 | 0 |
|---|---|
| 적용 요소 | 플렉스 아이템 |
| 상속 | 아니오 |
| 애니메이션 | 숫자로 계산된 값 |
브라우저 호환성
| 속성 |
데스크탑 Chrome
|
데스크탑 Edge
|
데스크탑 Firefox
|
Safari
|
|---|---|---|---|---|
flex-grow
|
29 | 12 | 20 | 9 |
같이 보기
- CSS flex-basis 속성 – 플렉스 아이템 크기 계산의 기준 설정
- CSS flexbox의 align-items 속성
- CSS flex-direction 속성 – 플렉스 아이템이 배치되는 흐름 방향 지정
- CSS flex-wrap 속성 – 플렉스 컨테이너의 줄바꿈 허용 설정
- CSS flex-flow 속성 – flex-direction과 flex-wrap의 단축 속성
- CSS flexbox의 justify-content 속성
- CSS flexbox의 align-content 속성
- CSS flexbox의 gap 속성
- CSS flexbox의 align-self 속성
- CSS 플렉스 컨테이너(Flex Container)
- CSS 플렉스 아이템(Flex Item)