Spec-Zone.ru › CSS

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>.

Значения

<number>

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

Описание

Это свойство определяет, какая часть оставшегося пространства в флекс-контейнере должна быть выделена для элемента (коэффициент роста 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% дополнительного пространства.

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

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

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

Рабочие столы Мобильные устройства
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

См. также

  • flex сокращение
  • Основные понятия Flexbox
  • Управление соотношениями элементов flex вдоль основной оси
  • Модуль CSS flexible box layout
  • flex-grow это странно. Или нет? от CSS-Tricks (2017)

© 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

Spec-Zone.ru

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