Właściwość flex-shrink
Właściwość flex-shrink określa,
jak bardzo blok flex będzie zmniejszany względem
sąsiednich elementów wewnątrz kontenera flex
w przypadku braku wolnego miejsca.
Na przykład, jeśli wszystkie bloki flex wewnątrz kontenera flex
mają flex-shrink:1, to będą one
jednakowego rozmiaru. Jeśli jeden z nich ma
flex-shrink:2, to będzie on 2
razy mniejszy niż wszystkie pozostałe.
Stosuje się do: konkretnego bloku flex.
Ta właściwość wchodzi w skład jako część składowa właściwości-skrótu
flex.
Składnia
selektor {
flex-shrink: liczba dodatnia;
}
Wartość domyślna: 1.
Przykład
Załóżmy, że mamy 3 elementy. Szerokość każdego z nich
wynosi 200px i łącznie wynosi 600px,
co jest większe niż szerokość kontenera nadrzędnego, która
wynosi 350px:
<div class="parent">
<div class="child elem1">1</div>
<div class="child elem2">2</div>
<div class="child elem2">3</div>
</div>
.parent {
display: flex;
width: 350px;
height: 200px;
border: 1px solid red;
}
.child {
width: 200px;
height: 50px;
border: 1px solid green;
}
.elem1 {
flex-shrink: 1;
}
.elem2 {
flex-shrink: 2;
}
.elem3 {
flex-shrink: 3;
}
:
Obliczmy ujemne wolne miejsce według wzoru:
600px - 350px = 250px
Łączna ważona szerokość elementów
z uwzględnieniem wartości właściwości flex-shrink
dla każdego elementu będzie równa:
200px * 1 + 200px * 2 + 200px * 3 = 1200px
Teraz określmy, o ile zmniejszy się pierwszy element:
250px * 1 (flex-shrink) * 200 (width) / 1200 = 41,6px
Drugi element:
250px * 2 (flex-shrink) * 200 (width) / 1200 = 83,3px
Trzeci element:
250px * 3 (flex-shrink) * 200 (width) / 1200 = 125px
Okazuje się, że trzeci element, którego wartość
flex-shrink wynosi 3, zmniejszy się bardziej
niż inne elementy.
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 wielowierszowość 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-grow,
która ustawia "zachłanność" bloków flex -
właściwość
flex,
skrót dla flex-grow, flex-shrink i flex-basis