⊗mkSpFxSFC 96 of 128 menu

Regulacja kompresji bloków flex w CSS

Domyślnie od wszystkich elementów odcinane są kawałki proporcjonalne do szerokości elementu. Można jednak sprawić, że od niektórych elementów zostaną odcięte większe lub mniejsze kawałki. Służy do tego specjalna właściwość flex-shrink.

Właściwość ta reprezentuje pewną wagę, przez którą zostanie pomnożona szerokość elementu przy obliczaniu odcinanego kawałka według przedstawionego wcześniej wzoru. Na przykład, jeśli szerokość elementu wynosi 200px, a jego flex-shrink wynosi 3, to ważona (czyli pomnożona przez wagę) szerokość elementu wyniesie:

200px * 3 = 600px

Wzór uwzględniający flex-shrink będzie miał następującą postać: ujemna przestrzeń swobodna * (ważona szerokość elementu / suma wszystkich ważonych szerokości elementów).

Spójrzmy na przykład. Załóżmy, że mamy 4 elementy. Niech szerokość pierwszego elementu wynosi 400px, a flex-shrink wynosi 2, szerokość pozostałych elementów - 200px, a ich flex-shrink wynosi 1. Niech szerokość rodzica wynosi 900px.

Sumaryczna szerokość elementów wynosi:

400px + 3 * 200px = 1000px

Ujemna przestrzeń swobodna będzie równa:

1000px - 900px = 100px

Sumaryczna ważona szerokość elementów wynosi:

400px * 2 + 200px * 1 + 200px * 1 + 200px * 1 = 1400px

Wažona szerokość pierwszego elementu wynosi:

400px * 2 = 800px

Od pierwszego elementu zostanie odcięty następujący kawałek:

100px * (800px / 1400px) = 100px * 0.57 = 57.14px

Szerokość elementu będzie równa:

400px - 57.14px = 342.86px ~ 343px

Wažona szerokość każdego z pozostałych elementów wynosi:

200px * 1 = 200px

Od każdego elementu zostanie odcięty następujący kawałek:

100px * (200px / 1400px) = 100px * 0.142 = 14.2px

Szerokość elementu będzie równa:

200px - 14.2px = 185.8px ~ 186px

Zaimplementuj opisane bloki i sprawdź pomiarem, czy szerokość elementów będzie rzeczywiście równa obliczonej przez nas.

Oblicz szerokość bloków, a następnie sprawdź obliczenia pomiarem:

<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: 200px; height: 200px; border: 1px solid red; } .child { height: 50px; border: 1px solid green; } .elem1 { width: 100px; flex-shrink: 2; } .elem2 { width: 100px; flex-shrink: 1; } .elem3 { width: 100px; flex-shrink: 1; }

Oblicz szerokość bloków, a następnie sprawdź obliczenia pomiarem:

<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: 200px; height: 200px; border: 1px solid red; } .child { height: 50px; border: 1px solid green; } .elem1 { width: 100px; flex-shrink: 3; } .elem2 { width: 100px; flex-shrink: 2; } .elem3 { width: 100px; flex-shrink: 1; }

Oblicz szerokość bloków, a następnie sprawdź obliczenia pomiarem:

<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: 500px; height: 200px; border: 1px solid red; } .child { height: 50px; border: 1px solid green; } .elem1 { width: 300px; flex-shrink: 3; } .elem2 { width: 200px; flex-shrink: 2; } .elem3 { width: 200px; flex-shrink: 1; } .elem4 { width: 200px; flex-shrink: 1; }
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ć