Savybė flex-shrink

Savybė flex-shrink nustato, kiek flex-blokas bus sumažinamas, palyginti su gretimais elementais flex-konteinerio viduje, jei trūksta laisvos vietos.

Pavyzdžiui, jei visi flex-blokai flex-konteinerio viduje turi flex-shrink:1, tai jie bus vienodo dydžio. Jei vienas iš jų turi flex-shrink:2, tai jis bus 2 kartus mažesnis už visus kitus.

Taikoma: konkrečiam flex blokui.

Ši savybė įeina kaip sudėtinė dalis į trumpąją savybę flex.

Sintaksė

cssselektorius {
  flex-shrink: teigiamas skaičius;
}

Numatytoji reikšmė: 1.

Pavyzdys

Tarkime, kad turime 3 elementus. Kiekvieno iš jų plotis yra 200px ir iš viso sudaro 600px, o tai yra daugiau nei tėvinio konteinerio plotis, kuris yra 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;
}

Результат:

Apskaičiuokime neigiamą laisvą erdvę pagal formulę:

600px - 350px = 250px

Bendra svertinė elementų plotis atsižvelgiant į kiekvieno elemento savybės flex-shrink reikšmes bus lygi:

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

Dabar nustatykime, kiek susitrauks pirmasis elementas:

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

Antrasis elementas:

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

Trečiasis elementas:

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

Pasirodo, trečiasis elementas, kurio reikšmė flex-shrink yra 3, susitrauks labiau už kitus elementus.

Taip pat žiūrėkite

  • savybė flex-direction,
    kuri nurodo flex blokų ašių kryptį
  • savybė justify-content,
    kuri nurodo lygiavimą pagrindinėje ašyje
  • savybė align-items,
    kuri nurodo lygiavimą skersinėje ašyje
  • savybė flex-wrap,
    kuri nurodo flex blokų kelių eilučių išdėstymą
  • savybė flex-flow,
    santrumpa flex-direction ir flex-wrap
  • savybė order,
    kuri nurodo flex blokų tvarką
  • savybė align-self,
    kuri nurodo vieno bloko lygiavimą
  • savybė flex-basis,
    kuri nurodo konkretaus flex bloko dydį
  • savybė flex-grow,
    kuri nurodo flex blokų "godumą"
  • savybė flex,
    santrumpa flex-grow, flex-shrink ir flex-basis