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.
Значения
Формальное определение
| Начальное значение | 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.
Спецификации
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 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."] |
12.115 | 98 | 2925 |
20["С Firefox 28 поддерживаются многострочные flexбоксы.", "До Firefox 32 Firefox не мог анимировать значения, начинающиеся или заканчивающиеся на0."] |
12.114 | 98 | 2.01.5 | 4.44.4 |
См. также
© 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