flex-grow
Baseline Широко распространённый
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с сентября 2015 года.
Свойство flex-grow CSS устанавливает коэффициент роста flex, который определяет, сколько свободного положительного пространства (если оно есть) флекс-контейнера должно быть выделено для основной величины элемента flex.
Когда основная величина флекс-контейнера больше, чем сумма основных величин его элементов flex, это свободное положительное пространство может быть распределено между элементами flex, и рост каждого элемента будет определяться его значением коэффициента роста как пропорцией от общей суммы коэффициентов роста всех элементов flex.
Попробуйте
Синтаксис
/* <number> values */ flex-grow: 3; flex-grow: 0.6; /* Global values */ flex-grow: inherit; flex-grow: initial; flex-grow: revert; flex-grow: revert-layer; flex-grow: unset;
Свойство flex-grow задается как единственное <number>.
Значения
Описание
Это свойство определяет, какая часть оставшегося пространства в флекс-контейнере должна быть выделена для элемента (коэффициент роста flex).
Основная величина — это либо ширина, либо высота элемента, в зависимости от значения flex-direction.
Остаточное пространство, или положительное свободное пространство, — это размер флекс-контейнера минус сумма размеров всех элементов flex. Если у всех элементов-потомков одинаковый коэффициент роста flex, то все элементы получат одинаковую долю оставшегося пространства. Общепринятая практика — установить flex-grow: 1, но установление коэффициента роста flex для всех элементов flex в значение 88, 100, 1.2, или любое другое значение, большее, чем 0, даст тот же результат: значение является отношением.
Если значения flex-grow различаются, свободное положительное пространство распределяется в соответствии с отношением, определенным разными коэффициентами роста flex. Значения коэффициентов роста всех элементов-потомков элемента flex складываются. Затем свободное положительное пространство флекс-контейнера, если оно есть, делится на эту сумму. Размеры основной величины каждого элемента flex со значением flex-grow больше, чем 0 будут увеличиваться на этот частное, умноженное на его собственный коэффициент роста.
Например, если четыре 100px элемента flex находятся в флекс-контейнере и коэффициенты роста элементов flex равны 0, 1, 2, и 3, соответственно, общая основная величина трех элементов равна 400px, что означает, что 300px свободного положительного пространства подлежит распределению. Всего есть 6 коэффициентов роста (3 + 2 + 1), следовательно, каждый коэффициент роста равен 50px ((300px / 6 ). Каждый элемент flex получает количество свободного положительного пространства, равное этому значению, умноженному на его значение flex-grow — соответственно 0, 50px, 100px, и 150px. Таким образом, общие размеры элементов flex составляют 100px, 150px, 200px, и 250px соответственно.
flex-grow обычно используется вместе с другими сокращенными свойствами flex, flex-shrink и flex-basis. Рекомендуется использовать сокращенное свойство flex для обеспечения установки всех значений.
Формальное определение
| Начальное значение | 0 |
|---|---|
| Применяется к | элементам flex, включая псевдоэлементы внутри потока |
| Унаследованное | нет |
| Вычисленное значение | как указано |
| Тип анимации | число number |
Формальный синтаксис
flex-grow =
<number [0,∞]>
Примеры
Установка коэффициента роста элемента flex
В этом примере всего восемь коэффициентов роста распределены среди шести элементов flex, что означает, что каждый коэффициент роста составляет 12.5% оставшегося пространства.
HTML
<h1>This is a <code>flex-grow</code> example</h1> <p> A, B, C, and F have <code>flex-grow: 1</code> set. D and E have <code>flex-grow: 2</code> set. </p> <div id="content"> <div class="small" style="background-color:red;">A</div> <div class="small" style="background-color:lightblue;">B</div> <div class="small" style="background-color:yellow;">C</div> <div class="double" style="background-color:brown;">D</div> <div class="double" style="background-color:lightgreen;">E</div> <div class="small" style="background-color:brown;">F</div> </div>
CSS
#content {
display: flex;
}
div > div {
border: 3px solid rgb(0 0 0 / 20%);
}
.small {
flex-grow: 1;
}
.double {
flex-grow: 2;
border: 3px solid rgb(0 0 0 / 20%);
}
Результат
Когда шесть элементов flex распределяются по основной оси контейнера, если сумма основного содержимого этих элементов flex меньше размера основной оси контейнера, дополнительное пространство распределяется между элементами с размерами, с A, B, C, и F, каждый получает 12.5% оставшегося пространства, а D и E каждый получает 25% дополнительного пространства.
Спецификации
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
flex-grow |
2922 | 1212 | 20Поддержка многострочных флексбоксов с Firefox 28. |
12.115 | 97 | 2925 | 20Поддержка многострочных флексбоксов с Firefox 28. |
12.114 | 97 | 2.01.5 | 4.44.4 |
less_than_zero_animate |
49 | 79 | 32В Firefox до версии 32 не поддерживалась анимация значений, начинающихся или заканчивающихся на0. |
36 | Нет | 49 | 32В Firefox до версии 32 не поддерживалась анимация значений, начинающихся или заканчивающихся на0. |
36 | Нет | 5.0 | 49 |
См. также
© 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-grow