--- 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%, если не указано.nonewidth и 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.