Spec-Zone.ru › CSS

flex-shrink

Базовая линия Широко используется

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с сентября 2015 года.

  • Узнать больше
  • Полная совместимость
  • Отправить отзыв

Свойство flex-shrink CSS задаёт коэффициент уменьшения flex элемента. Если размер всех flex элементов больше, чем размер flex контейнера, то flex элементы могут уменьшиться для соответствия контейнеру в соответствии со своим значением flex-shrink. Свободное отрицательное пространство каждой flex строки распределяется между flex элементами в строке, которые имеют значение flex-shrink больше, чем 0.

Примечание: Рекомендуется использовать сокращённое свойство flex вместо отдельных свойств flex-shrink, flex-grow и flex-basis. Здесь они разделены, так как этот документ описывает один из компонентов сокращённого свойства: свойство flex-shrink.

Попробуйте

Синтаксис

/* <number> values */
flex-shrink: 2;
flex-shrink: 0.6;

/* Global values */
flex-shrink: inherit;
flex-shrink: initial;
flex-shrink: revert;
flex-shrink: revert-layer;
flex-shrink: unset;

Описание

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

Это свойство обрабатывает ситуации, когда браузер вычисляет значения flex-basis для flex элементов и обнаруживает, что они слишком велики для размещения в flex контейнере. Пока flex-shrink имеет положительное значение, элементы будут уменьшаться, чтобы не выходить за пределы контейнера.

Свойство flex-grow отвечает за распределение доступного положительного свободного пространства пропорционально коэффициенту роста каждого элемента flex, принимая во внимание только значение свойства flex-grow. Свойство flex-shrink управляет удалением отрицательного свободного пространства, чтобы блоки помещались в свой контейнер без переполнения. Удаление пространства немного сложнее, чем добавление. Коэффициент уменьшения flex умножается на базовый размер flex; это распределяет отрицательное пространство пропорционально тому, насколько элемент может уменьшиться. Это предотвращает уменьшение меньших элементов до 0px, прежде чем заметно уменьшится больший элемент.

Обычно flex-shrink используется совместно со свойствами flex-grow и flex-basis. В сокращённом свойстве flex коэффициент уменьшения всегда является вторым <number>. Если сокращённое свойство содержит только одно числовое значение, то это значение считается значением flex-grow.

Значения

Свойство flex-shrink задаётся как одно <number>.

<number>

См. <number>. Отрицательные значения недопустимы. По умолчанию равно 1.

Формальное определение

Начальное значение 1
Применимо к flex элементам, включая псевдоэлементы внутри потока
Наследуется нет
Вычисленное значение как указано
Тип анимации число число

Формальный синтаксис

flex-shrink = 
<number [0,∞]>

Примеры

Установка коэффициента уменьшения flex элемента

Этот пример демонстрирует, как распределяется отрицательное свободное пространство на основе коэффициента уменьшения элемента. Он содержит пять flex элементов со значением flex-shrink больше 0, которые имеют общую ширину, большую, чем ширина родительского flex контейнера.

HTML

<div id="content">
  <div class="box" style="background-color:red;">A</div>
  <div class="box" style="background-color:lightblue;">B</div>
  <div class="box" style="background-color:yellow;">C</div>
  <div class="box4" style="background-color:lightsalmon;">D</div>
  <div class="box5" style="background-color:lightgreen;">E</div>
</div>

CSS

Мы задаём каждому flex элементу width значение 200px. Поскольку свойство flex-basis по умолчанию равно auto, flex-basis каждого элемента составляет 200px. Это даёт flex элементам общую ширину 1000px, в два раза больше размера контейнера. Мы устанавливаем все flex элементы как сжимаемые, со значениями flex-shrink больше 0. У последних двух элементов установлены бо́льшие значения flex-shrink, поэтому они будут сжиматься сильнее.

#content {
  display: flex;
  width: 500px;
}

#content div {
  width: 200px;
}

.box {
  flex-shrink: 1;
}

.box4 {
  flex-shrink: 1.5;
}

.box5 {
  flex-shrink: 2;
}

Результат

Flex элементы не выходят за пределы контейнера, потому что они могут сжиматься: 500px отрицательного свободного пространства распределяется между пятью элементами в соответствии со значениями flex-shrink. У первых трёх элементов установлено значение flex-shrink: 1. У элемента D значение flex-shrink: 1.5, а у элемента E значение flex-shrink: 2. Конечная ширина D и E меньше, чем у других, причём E меньше, чем D.

Спецификации

Спецификация
CSS Flexible Box Layout Module Level 1
# flex-shrink-property

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari на IOS Samsung Internet WebView Android
flex-shrink 2922 1212
20["С Firefox 28 поддерживаются многострочные flexбоксы.", "До Firefox 32 Firefox не мог анимировать значения, начинающиеся или заканчивающиеся на 0."]
49
12.115 98 2925
20["С Firefox 28 поддерживаются многострочные flexбоксы.", "До Firefox 32 Firefox не мог анимировать значения, начинающиеся или заканчивающиеся на 0."]
49
12.114 98 2.01.5 4.44.4

См. также

  • Основные понятия flexbox
  • Управление отношениями flex элементов вдоль основной оси
  • CSS flexible box layout модуль

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/flex-shrink

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API