CSS의 flex-grow 속성을 사용하면 플렉스 컨테이너 안에 남은 여유 공간을 각 플렉스 항목이 얼마나 많이 차지하여 확장될지 비율을 지정할 수 있습니다. 하나 이상의 플렉스 항목에 적용할 수 있으며, 값은 단위 없는 숫자로 표현합니다.
flex-grow 속성의 기본 개념
flex-grow의 기본값은 0으로, 이 경우 항목은 자신의 원래 크기 이상으로 늘어나지 않습니다. 값을 1로 설정하면 해당 항목이 남은 공간을 다른 항목과 균등하게 나누어 가지며, 값이 클수록 상대적으로 더 넓은 공간을 할당받습니다.
예제
다음 코드는 flex-grow 속성을 실제로 구현한 예입니다. 아래 예제에서는 Q3 플렉스 항목에 flex-grow: 20을 지정했기 때문에 나머지 항목들(flex-grow: 1)보다 훨씬 더 크게 표시됩니다.
<!DOCTYPE html>
<html>
<head>
<style>
.mycontainer {
display: flex;
background-color: orange;
align-content: space-between;
}
.mycontainer > div {
background-color: white;
text-align: center;
line-height: 40px;
font-size: 25px;
width: 100px;
margin: 5px;
}
</style>
</head>
<body>
<h1>Quiz</h1>
<div class = "mycontainer">
<div style = "flex-grow: 1">Q1</div>
<div style = "flex-grow: 1">Q2</div>
<div style = "flex-grow: 20">Q3</div>
<div style = "flex-grow: 1">Q4</div>
<div style = "flex-grow: 1">Q5</div>
</div>
</body>
</html>실행 결과
위 코드를 실행하면 주황색 배경의 플렉스 컨테이너 안에 Q1부터 Q5까지의 흰색 항목들이 배치되며, Q3 항목만 flex-grow 값이 20으로 설정되어 있어 나머지 항목들에 비해 훨씬 넓게 확장된 것을 확인할 수 있습니다.
정리
flex-grow 속성은 반응형 레이아웃을 만들 때 특정 요소가 화면 공간을 유연하게 채우도록 조절하는 데 매우 유용합니다. 모든 항목에 동일한 값을 주면 균등 분배가 되고, 특정 항목에 더 큰 값을 주면 그 항목이 우선적으로 공간을 차지하게 됩니다.