Svojstvo flex-shrink

Svojstvo flex-shrink određuje to, koliko će se flex-blok smanjivati u odnosu na susedne elemente unutar flex-kontejnera u slučaju nedostatka slobodnog prostora.

Na primer, ako svi flex-blokovi unutar flex-kontejnera imaju flex-shrink:1, onda će oni biti jednake veličine. Ako jedan od njih ima flex-shrink:2, onda će on biti 2 puta manji od svih ostalih.

Primenjuje se na: konkretni flex blok.

Ovo svojstvo ulazi kao sastavni deo u skraćeno svojstvo flex.

Sintaksa

cssselektor {
  flex-shrink: pozitivan broj;
}

Podrazumevana vrednost: 1.

Primer

Neka imamo 3 elementa. Širina svakog od njih iznosi 200px i ukupno je jednaka 600px, što je više od širine roditeljskog kontejnera, koja iznosi 350px:

html<div class="parent">
  <div class="child elem1">1</div>
  <div class="child elem2">2</div>
  <div class="child elem3">3</div>
</div>
css.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;
}

Результат:

Hajde da izračunamo negativni slobodni prostor pomću formule:

600px - 350px = 250px

Zbirna ponderisana širina elemenata uzimajući u obzir vrednosti svojstva flex-shrink za svaki element će biti jednaka:

200px * 1 + 200px * 2 + 200px * 3 = 1200px

Sada određujemo koliko će se smanjiti prvi element:

250px * 1 (flex-shrink) * 200 (width) / 1200 = 41,6px

Drugi element:

250px * 2 (flex-shrink) * 200 (width) / 1200 = 83,3px

Treći element:

250px * 3 (flex-shrink) * 200 (width) / 1200 = 125px

Ispada da će se treći element, kod koga vrednost flex-shrink iznosi 3, smanjiti više od ostalih elemenata.

Pogledajte takođe

  • svojstvo flex-direction,
    koje zadaje pravac osa flex blokova
  • svojstvo justify-content,
    koje zadaje poravnanje duž glavne ose
  • svojstvo align-items,
    koje zadaje poravnanje duž poprečne ose
  • svojstvo flex-wrap,
    koje višelinijskost flex blokova
  • svojstvo flex-flow,
    skraćenica za flex-direction i flex-wrap
  • svojstvo order,
    koje zadaje redosled flex blokova
  • svojstvo align-self,
    koje zadaje poravnanje jednog bloka
  • svojstvo flex-basis,
    koje zadaje veličinu konkretnog flex bloka
  • svojstvo flex-grow,
    koje zadaje pohlepu flex blokova
  • svojstvo flex,
    skraćenica za flex-grow, flex-shrink i flex-basis