--- title: flex slug: Web/CSS/flex translation_of: Web/CSS/flex ---
Свойство CSS flex
- это сокращенное свойство, определяющее способность гибкого элемента растягиваться или сжиматься для заполнения собой доступного свободного пространства. Это свойство устанавливает flex-grow, flex-shrink и flex-basis.
{{cssinfo}}
Для более полной информации читайте Использование flex-контейнеров CSS.
/* 0 0 auto */ flex: none; /* Одно значение, число без единиц: flex-grow */ flex: 2; /* Одно значение, ширина/высота: flex-basis */ flex: 10em; flex: 30px; flex: auto; flex: content; /* Два значения: flex-grow | flex-basis */ flex: 1 30px; /* Два значения: flex-grow | flex-shrink */ flex: 2 2; /* Три значения: flex-grow | flex-shrink | flex-basis */ flex: 2 2 10%; /* Глобальные значения */ flex: inherit; flex: initial; flex: unset;
<'flex-grow'>
{{cssxref("flex-grow")}}
для флекс элемента. Смотри {{cssxref("<number>")}} для большей информации. Негативные значения считаются недействительными. Значение по умолчанию 0
, если не указано.<'flex-shrink'>
{{cssxref("flex-shrink")}}
для флекс элемента. Смотри {{cssxref("<number>")}} для большей информации. Негативные значения считаются недействительными. Значение по умолчанию 1
, если не указано.<'flex-basis'>
{{cssxref("flex-basis")}}
для флекс элемента. Любое корректное значение для высоты(height) и ширины(width) - корректно и для данного свойства. Предпочтительный размер 0 должен иметь единицу измерения, чтобы не восприниматься как гибкий. Значение по умолчанию 0%
, если не указано.none
width
и height
. Он полностью негибкий: не сжимается и не увеличивается по отношению к гибкому контейнеру. Эквивалентно значению "flex: 0 0 auto
".{{csssyntax}}
#flex-container { display: -webkit-flex; display: flex; -webkit-flex-direction: row; flex-direction: row; } #flex-container > .flex-item { -webkit-flex: auto; flex: auto; } #flex-container > .raw-item { width: 5rem; }
<div id="flex-container"> <div class="flex-item" id="flex">Flex box (click to toggle raw box)</div> <div class="raw-item" id="raw">Raw box</div> </div>
var flex = document.getElementById("flex"); var raw = document.getElementById("raw"); flex.addEventListener("click", function() { raw.style.display = raw.style.display == "none" ? "block" : "none"; });
#flex-container { width: 100%; font-family: Consolas, Arial, sans-serif; } #flex-container > div { border: 1px solid #f00; padding: 1rem; } #flex-container > .raw-item { border: 1px solid #000; }
{{EmbedLiveSample('%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80','100%','60')}}
Спецификация | Статус | Комментарий |
---|---|---|
{{SpecName('CSS3 Flexbox', '#flex', 'flex')}} | {{Spec2('CSS3 Flexbox')}} | Initial definition |
{{CompatibilityTable()}}
Особенность | Firefox (Gecko) | Chrome | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Базовая поддержка | {{CompatGeckoDesktop("18.0")}} (behind a pref) [1] [2] {{CompatGeckoDesktop("20.0")}} [2][3] |
21.0{{property_prefix("-webkit")}} 29.0 |
10.0{{property_prefix("-ms")}} [3][4] 11.0 [3][4] |
12.10 | 6.1{{property_prefix("-webkit")}} |
Особенность | Firefox Mobile (Gecko) | Android | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|
Basic support | {{CompatUnknown()}} | 4.4 | 11 | 12.10 | 7.1{{property_prefix("-webkit")}} |
[1] Для активации flexbox для Firefox 18 и 19 пользователю неободимо внести следующее изменение:
свойство конфигурации "layout.css.flexbox.enabled" вtrue
.
[2] Multi-line flexbox поддерживается Firefox 28.
[3] Internet Explorer 10-11 (кроме 12+) игонорируют использование calc()
во flex-basis части flex
синтаксиса. Это можно обойти, используя свойства longhand вместо сокращения. Дополнительную информацию см. В Flexbug # 8.
[4] В Internet Explorer 10-11 (кроме 12+), объявление flex
без единичного значения в его flex-basis части считается синтаксически недействительным и поэтому игнорируется. Обходной путь состоит в том, чтобы всегда включать единицу в flex-basis часть flex
. Дополнительную информацию см. В Flexbug #4.