Vlastnost flex-shrink

Vlastnost flex-shrink určuje, jak moc se flex blok zmenší relativně k sousedním prvkům uvnitř flex kontejneru v případě nedostatku volného místa.

Například, pokud všechny flex bloky uvnitř flex kontejneru mají flex-shrink:1, budou stejné velikosti. Pokud jeden z nich má flex-shrink:2, bude 2 krát menší než všechny ostatní.

Platí pro: konkrétní flex blok.

Tato vlastnost je součástí zkratkové vlastnosti flex.

Syntaxe

cssselektor {
  flex-shrink: kladné číslo;
}

Výchozí hodnota: 1.

Příklad

Předpokládejme, že máme 3 prvky. Šířka každého z nich je 200px a celková šířka je 600px, což je více než šířka nadřazeného kontejneru, která je 350px:

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

Результат:

Vypočítejme záporný volný prostor pomocí vzorce:

600px - 350px = 250px

Celková vážená šířka prvků s ohledem na hodnoty vlastnosti flex-shrink pro každý prvek bude:

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

Nyní určeme, jak moc se zmenší první prvek:

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

Druhý prvek:

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

Třetí prvek:

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

Vychází, že třetí prvek, jehož hodnota flex-shrink je 3, se zmenší více než ostatní prvky.

Viz také

  • vlastnost flex-direction,
    která nastavuje směr os flex bloků
  • vlastnost justify-content,
    která nastavuje zarovnání podél hlavní osy
  • vlastnost align-items,
    která nastavuje zarovnání podél příčné osy
  • vlastnost flex-wrap,
    která nastavuje víceřádkovost flex bloků
  • vlastnost flex-flow,
    zkratka pro flex-direction a flex-wrap
  • vlastnost order,
    která nastavuje pořadí flex bloků
  • vlastnost align-self,
    která nastavuje zarovnání jednoho bloku
  • vlastnost flex-basis,
    která nastavuje velikost konkrétního flex bloku
  • vlastnost flex-grow,
    která nastavuje "růst" flex bloků
  • vlastnost flex,
    zkratka pro flex-grow, flex-shrink a flex-basis