⊗mkSpFxGr 86 of 128 menu

CSS Flex 요소의 늘어남(flex-grow)

현재 두 개의 flex 블록이 나란히 놓여 있다고 가정해 봅시다. 이 블록들의 너비는 100px로 설정되어 있고, 부모 요소의 너비는 300px입니다:

<div class="parent"> <div class="child">1</div> <div class="child">2</div> </div> .parent { display: flex; width: 300px; height: 200px; border: 1px solid red; } .child { width: 100px; height: 100px; border: 1px solid green; }

:

보시다시피, 요소들의 총 너비가 부모의 너비보다 작기 때문에 오른쪽에 빈 공간이 남습니다.

필요하다면 이 남는 공간을 요소들 사이에 비례적으로 나눌 수 있습니다. 이것은 flex 요소에 지정되는 flex-grow 속성을 통해 이루어집니다. 이 속성의 값은 단위가 없는 숫자입니다.

이 속성이 어떻게 작동하는지 실제로 살펴보겠습니다.

예시

현재 우리에게는 너비가 100px인 두 개의 flex 블록이 있습니다. 요소들의 총 너비는 200px이고, 부모의 너비는 300px입니다. 결과적으로 100px의 빈 공간이 남습니다.

요소들에 flex-grow가 설정되지 않았다면, 우리는 단순히 이 빈 공간을 보게 됩니다. 그러나 설정되어 있다면, 요소들의 실제 너비는 지정된 값보다 커질 것입니다. 요소들은 남는 공간을 서로 비례적으로 나누어 자신의 너비에 더할 것입니다.

예를 들어 첫 번째 요소의 flex-grow1이고, 두 번째 요소의 값이 3이라고 합시다. 각 요소가 얼마나 많은 빈 공간을 얻을지 계산해 봅시다.

먼저 우리 요소들의 flex-grow 단위 총합을 구해야 합니다. 첫 번째 요소의 값은 1이고, 두 번째 요소의 값은 3입니다. 이는 총합이 4임을 의미합니다.

이제 100px의 빈 공간을 4로 나누면, flex-grow 한 단위당 25px가 됩니다. 결과적으로 첫 번째 요소에는 flex-grow 단위 하나, 즉 25px가 추가되고, 두 번째 요소에는 세 단위, 즉 75px가 추가됩니다.

첫 번째 요소의 너비는 125px가 되고, 두 번째 요소의 너비는 175px가 됩니다:

<div class="parent"> <div class="child elem1">1</div> <div class="child elem2">2</div> </div> .parent { display: flex; width: 300px; height: 200px; border: 1px solid red; } .child { height: 50px; border: 1px solid green; } .elem1 { width: 100px; flex-grow: 1; } .elem2 { width: 100px; flex-grow: 3; }

:

예시

이제 부모의 너비가 400px이고, 첫 번째 요소의 너비가 200px, 두 번째 요소의 너비가 100px라고 가정해 봅시다. 결과적으로 빈 공간은 다시 100px가 됩니다.

각 요소의 flex-grow1로 설정해 봅시다. 총합은 2가 되므로, 100px의 빈 공간을 2로 나누어야 합니다. 결과적으로 flex-grow 한 단위당 50px가 됩니다.

모든 요소의 flex-grow 값이 같기 때문에, 모든 요소에 동일하게 50px가 추가됩니다. 이는 첫 번째 요소가 250px가 되고, 두 번째 요소가 150px가 된다는 것을 의미합니다:

<div class="parent"> <div class="child elem1">1</div> <div class="child elem2">2</div> </div> .parent { display: flex; width: 400px; height: 200px; border: 1px solid red; } .child { height: 50px; border: 1px solid green; } .elem1 { width: 200px; flex-grow: 1; } .elem2 { width: 100px; flex-grow: 1; }

:

예시

부모의 너비가 다시 400px이고, 첫 번째 요소의 너비가 200px, 두 번째 요소의 너비가 100px라고 가정해 봅시다.

이제 첫 번째 요소의 flex-grow3으로, 두 번째 요소의 값을 1으로 설정해 봅시다. 그러면 flex-grow 총합은 4가 됩니다. 그러면 flex-grow 한 단위는 100px / 4 = 25px와 같습니다.

첫 번째 요소에 75px가 추가되어 275px가 되고, 두 번째 요소에는 25px가 추가되어 125px가 됩니다:

<div class="parent"> <div class="child elem1">1</div> <div class="child elem2">2</div> </div> .parent { display: flex; width: 400px; height: 200px; border: 1px solid red; } .child { height: 50px; border: 1px solid green; } .elem1 { width: 200px; flex-grow: 3; } .elem2 { width: 100px; flex-grow: 1; }

:

실습 문제

아래의 모든 문제에서는 너비와 flex-grow 값을 가진 flex 요소들이 있는 코드가 주어집니다. 제공된 코드를 기반으로 각 요소가 어떤 크기를 가질지 계산하세요. 그런 다음 코드를 실행하고 실제 요소 너비를 측정하여 계산을 확인하세요.

<div class="parent"> <div class="child elem1">1</div> <div class="child elem2">2</div> <div class="child elem3">3</div> </div> .parent { display: flex; width: 500px; height: 200px; border: 1px solid red; } .child { height: 50px; border: 1px solid green; } .elem1 { width: 200px; flex-grow: 3; } .elem2 { width: 100px; flex-grow: 1; } .elem3 { width: 100px; flex-grow: 1; }
<div class="parent"> <div class="child elem1">1</div> <div class="child elem2">2</div> <div class="child elem3">3</div> </div> .parent { display: flex; width: 700px; height: 200px; border: 1px solid red; } .child { height: 50px; border: 1px solid green; } .elem1 { width: 100px; flex-grow: 1; } .elem2 { width: 100px; flex-grow: 2; } .elem3 { width: 200px; flex-grow: 3; }
<div class="parent"> <div class="child elem1">1</div> <div class="child elem2">2</div> <div class="child elem3">3</div> </div> .parent { display: flex; width: 500px; height: 200px; border: 1px solid red; } .child { height: 50px; border: 1px solid green; } .elem1 { width: 100px; flex-grow: 1; } .elem2 { width: 100px; flex-grow: 1; } .elem3 { width: 100px; flex-grow: 1; }
<div class="parent"> <div class="child elem1">1</div> <div class="child elem2">2</div> <div class="child elem3">3</div> <div class="child elem4">4</div> </div> .parent { display: flex; width: 1000px; height: 200px; border: 1px solid red; } .child { height: 50px; border: 1px solid green; } .elem1 { width: 200px; flex-grow: 1; } .elem2 { width: 100px; flex-grow: 2; } .elem3 { width: 100px; flex-grow: 4; } .elem4 { width: 100px; flex-grow: 3; }
한국어
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақКыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
우리는 웹사이트 운영, 분석 및 개인화를 위해 쿠키를 사용합니다. 데이터 처리는 개인정보 처리방침에 따라 이루어집니다.
모두 수락 설정 거부