Перейти к содержимому

CSS свойство flex

Свойство flex определяет компоненты гибкой длины. Это сокращённая запись для следующих свойств:

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

Свойство flex является одним из свойств CSS3.

Это свойство является частью модуля гибкой раскладки (Flexible Box Layout). Если гибких элементов нет, свойство flex не окажет никакого эффекта.

Ключевое слово auto эквивалентно 1 1 auto. Оно задаёт размер элемента на основе свойств width/height. Если свойство основного размера элемента установлено в auto, размер гибкого элемента будет определяться его содержимым.

Ключевое слово initial эквивалентно 1 0 auto. Оно задаёт размер элемента на основе его свойств width/height (или содержимого, если они не заданы). Это делает гибкий элемент негибким при наличии свободного пространства, и он не будет уменьшаться, если места недостаточно. Для выравнивания гибких элементов вдоль главной оси используются методы выравнивания или автоматические отступы.

Ключевое слово none эквивалентно 0 0 auto. Оно задаёт размер элемента в соответствии со свойствами width и height. Элемент полностью негибкий.

INFO

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

Начальное значение0 1 auto
Применяется кГибким элементам, включая псевдоэлементы в потоке.
НаследуетсяНет.
АнимацияДа.
ВерсияCSS3
Синтаксис DOMObject.style.flex = "1";

Синтаксис

Синтаксис свойства CSS flex

css
flex: flex-grow | flex-shrink | flex-basis | auto | initial | inherit;

Значения могут быть указаны в любом порядке. При использовании flex-basis вы также можете применить ограничения min-width или min-height, чтобы предотвратить уменьшение элемента ниже заданного размера.

Пример свойства flex:

Пример свойства CSS flex

html
<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      .box {
        width: 350px;
        height: 200px;
        padding-left: 0;
        list-style-type: none;
        border: 1px dashed black;
        display: flex;
      }
      .box div {
        flex: 1;
      }
      .green {
        background-color: #8ebf42;
      }
      .blue {
        background-color: #1c87c9;
      }
      .gray {
        background-color: #666666;
      }
    </style>
  </head>
  <body>
    <h2>Flex property example</h2>
    <div class="box">
      <div class="green">GREEN</div>
      <div class="blue">BLUE</div>
      <div class="gray">GRAY</div>
    </div>
  </body>
</html>

Результат

Свойство CSS flex

Пример свойства flex со значением "flex-grow":

Пример свойства CSS flex со значением flex-grow

html
<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      .box {
        width: 320px;
        height: 120px;
        border: 1px solid #666;
        display: flex;
      }
      .box div:nth-of-type(1) {
        flex-grow: 1;
      }
      .box div:nth-of-type(2) {
        flex-grow: 4;
      }
      .box div:nth-of-type(3) {
        flex-grow: 1;
      }
      .box div:nth-of-type(4) {
        flex-grow: 1;
      }
      .box div:nth-of-type(5) {
        flex-grow: 1;
      }
    </style>
  </head>
  <body>
    <h2>Flex-grow example</h2>
    <div class="box">
      <div style="background-color: #eee;"></div>
      <div style="background-color: #1c87c9;"></div>
      <div style="background-color: #8ebf42;"></div>
      <div style="background-color: #ccc;"></div>
      <div style="background-color: #666;"></div>
    </div>
  </body>
</html>

Пример свойства flex со значением "flex-shrink":

Пример свойства CSS flex со значением flex-shrink

html
<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      .box {
        width: 320px;
        height: 120px;
        border: 1px solid #666;
        display: flex;
      }
      .box div {
        flex-grow: 1;
        flex-shrink: 2;
        flex-basis: 100px;
      }
      
      .box div:nth-of-type(2) {
        flex-shrink: 5;
      }
    </style>
  </head>
  <body>
    <h2>Flex-shrink example</h2>
    <div class="box">
      <div style="background-color: #eeeeee;"></div>
      <div style="background-color: #1c87c9;"></div>
      <div style="background-color: #8ebf42;"></div>
      <div style="background-color: #cccccc;"></div>
      <div style="background-color: #666666;"></div>
    </div>
  </body>
</html>

Значения

ЗначениеОписание
flex-growОпределяет, насколько элемент будет расти относительно остальных гибких элементов в том же контейнере.
flex-shrinkОпределяет, насколько элемент будет уменьшаться относительно остальных гибких элементов в том же контейнере.
flex-basisОпределяет длину элемента как "auto", "inherit" или число, за которым следуют "%", "px", "em" и т. д.
autoЭквивалентно 1 1 auto.
initialЭквивалентно 1 0 auto.
noneЭквивалентно 0 0 auto.
inheritНаследует это свойство от родительского элемента.

Практика

Какие свойства имеет контейнер CSS Flex?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.