Уласцівасць flex-shrink

Уласцівасць flex-shrink вызначае тое, наколькі flex-блок будзе памяншацца адносна суседніх элементаў унутры flex-кантэйнера ў выпадку недахопу свабоднага месца.

Напрыклад, калі ўсе flex-блокі ўнутры flex-кантэйнера маюць flex-shrink:1, то яны будуць аднолькавага памеру. Калі адзін з іх мае flex-shrink:2, то ён будзе ў 2 разы менш, чым усе астатнія.

Ужываецца да: канкрэтнага flex блока.

Даная ўласцівасць уваходзіць як складовая частка ў уласцівасць-скарачэнне flex.

Сінтаксіс

cssселектар {
  flex-shrink: дадатныя лікі;
}

Значэнне па змаўчанні: 1.

Прыклад

Няхай у нас ёсць 3 элемента. Шырыня кожнага з іх складае 200px і сумарна роўная 600px, што больш за шырыню бацькоўскага кантэйнера, якая роўная 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;
}

Результат:

Давайце разлічым адмоўную свабодную прастору па формуле:

600px - 350px = 250px

Сумарная ўзважаная шырыня элементаў з улікам значэнняў уласцівасці flex-shrink для кожнага элемента будзе роўная:

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

Цяпер вызначым наколькі скараціцца першы элемент:

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

Другі элемент:

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

Трэці элемент:

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

Выходзіць, што трэці элемент, у якога значэнне flex-shrink роўнае 3 скараціцца больш за іншыя элементы.

Глядзіце таксама

  • уласцівасць flex-direction,
    якое задае кірунак восей flex блокаў
  • уласцівасць justify-content,
    якое задае выраўноўванне па галоўнай восі
  • уласцівасць align-items,
    якое задае выраўноўванне па папярочнай восі
  • уласцівасць flex-wrap,
    якое шматрадковасць flex блокаў
  • уласцівасць flex-flow,
    скарачэнне для flex-direction і flex-wrap
  • уласцівасць order,
    якое задае парадак flex блокаў
  • уласцівасць align-self,
    якое задае выраўноўванне аднаго блока
  • уласцівасць flex-basis,
    якое задае памер канкрэтнага flex блока
  • уласцівасць flex-grow,
    якое задае прагавітасць flex блокаў
  • уласцівасць flex,
    скарачэнне для flex-grow, flex-shrink і flex-basis