Свойство flex-shrink - "сжатие" отдельно взятого flex-блока в CSS

Свойство flex-shrink определяет то, насколько flex-блок будет уменьшаться относительно соседних элементов внутри flex-контейнера в случае недостатка свободного места.

Например, если все flex-блоки внутри flex-контейнера имеют flex-shrink:1, то они будут одинакового размера. Если один из них имеет flex-shrink:2, то он будет в 2 раза меньше, чем все остальные.

Применяется к: конкретному flex блоку.

Данное свойство входит как составная часть в свойство-сокращение flex.

Синтаксис

селектор { flex-shrink: положительное число; }

Значение по умолчанию: 1.

Пример

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

:

Давайте рассчитаем отрицательное свободное пространство по формуле:

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



Чат с GPT Компилятор