204 of 313 menu

Właściwość flex-grow

Właściwość flex-grow określa to, na ile pojedynczy blok flex może być większy od sąsiednich elementów, jeśli jest to konieczne.

Na przykład, jeśli wszystkie bloki flex wewnątrz kontenera flex mają flex-grow:1, to będą one miały jednakowy rozmiar. Jeśli jeden z nich ma flex-grow:2, to będzie on 2 razy większy niż wszystkie pozostałe.

Jeśli sumaryczna szerokość elementów jest mniejsza niż szerokość rodzica, po prawej stronie pozostaje pusta przestrzeń. W razie potrzeby tę pustą przestrzeń można proporcjonalnie podzielić między naszymi elementami. Robimy to za pomocą właściwości flex-grow, ustawianej elementom flex. Wartością tej właściwości jest liczba bezwymiarowa.

Stosuje się do: konkretnego bloku flex.

Ta właściwość wchodzi w skład skrótu właściwości flex.

Składnia

selektor { flex-grow: liczba dodatnia; }

Wartość domyślna: 0.

Przykład

Teraz mamy dwa bloki flex o szerokości 100px. Ich sumaryczna szerokość 200px, a szerokość rodzica - 300px. Okazuje się, że pozostaje wolna przestrzeń 100px.

Jeśli elementom nie jest ustawiony flex-grow, po prostu zobaczymy tę wolną przestrzeń. Jeśli jest im ustawiony, to rzeczywista szerokość elementów będzie większa niż ustawiona - proporcjonalnie podzielą między siebie wolną przestrzeń i dodadzą ją do swojej szerokości.

Niech dla przykładu u pierwszego elementu flex-grow wynosi 1, a u drugiego - 3. Obliczmy, jaką część wolnej przestrzeni otrzyma każdy element.

Najpierw trzeba uzyskać sumaryczną liczbę jednostek flex-grow wszystkich naszych elementów. U pierwszego elementu wynosi ona 1, a u drugiego - 3. Oznacza to, że suma wynosi 4.

Podzielmy teraz 100px wolnej przestrzeni przez 4 i otrzymamy, że 25px przypada na jedną jednostkę flex-grow. Okaże się, że do pierwszego elementu doda się jedna jednostka flex-grow, czyli 25px, a do drugiego - trzy jednostki, czyli 75px.

Szerokość pierwszego elementu wyniesie 125px, a drugiego - 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; }

:

Przykład

Niech teraz szerokość rodzica wynosi 400px, szerokość pierwszego elementu 200px, a szerokość drugiego elementu - 100px. Okaże się, że wolna przestrzeń znów wynosi 100px.

Ustawmy każdemu elementowi flex-grow, równy 1. W sumie otrzymamy 2, czyli 100px wolnej przestrzeni trzeba podzielić przez 2. Okaże się, że 50px przypada na jedną jednostkę chciwości.

Ponieważ wszystkie elementy mają tę samą wartość flex-grow, to do wszystkich elementów doda się ta sama wartość 50px. Oznacza to, że pierwszy element stanie się 250px, i a drugi stanie się 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; }

:

Przykład

Niech znów szerokość rodzica wynosi 400px, szerokość pierwszego elementu 200px, a szerokość drugiego elementu - 100px.

Ustawmy teraz pierwszemu elementowi flex-grow na wartość 3, a drugiemu - na wartość 1. Okaże się, że chciwość w sumie wynosi 4. Wtedy jedna jednostka chciwości równa się 100px / 4 = 25px.

Do pierwszego elementu doda się 75px, i stanie się 275px, a do drugiego - 25px, stanie się 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; }

:

Zobacz też

  • właściwość flex-direction,
    która ustawia kierunek osi bloków flex
  • właściwość justify-content,
    która ustawia wyrównanie wzdłuż osi głównej
  • właściwość align-items,
    która ustawia wyrównanie wzdłuż osi poprzecznej
  • właściwość flex-wrap,
    która ustawia zawijanie bloków flex
  • właściwość flex-flow,
    skrót dla flex-direction i flex-wrap
  • właściwość order,
    która ustawia kolejność bloków flex
  • właściwość align-self,
    która ustawia wyrównanie pojedynczego bloku
  • właściwość flex-basis,
    która ustawia rozmiar konkretnego bloku flex
  • właściwość flex-shrink,
    która ustawia ściśliwość bloków flex
  • właściwość flex,
    skrót dla flex-grow, flex-shrink i flex-basis
Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć