--- title: flex slug: Web/CSS/flex tags: - CSS - CSS Flexible Boxes - CSS Властивість - flexbox translation_of: Web/CSS/flex ---
CSS параметр flex є скороченим записом властивості, котра визначає здатність flex елемента змінювати свої розміри аби заповнити наявний простір. Flex елементи можна розтягнути аби використати увесь наявний простір пропорційно до вказаного параметра flex-grow, або flex-shrink аби запобігти виходу за межі батьківського контейнера.
{{cssinfo}}
Перегляньте Використання гнучких CSS контейнерів для більш детальної інформації та опису властивостей.
/* 0 0 auto */ flex: none; /* Одне значення, ціле число: flex-grow (flex-basis змінюється на 0) */ flex: 2; /* Одне значення, width/height: flex-basis */ flex: 10em; flex: 30px; flex: auto; flex: content; /* Два значення: flex-grow | flex-basis */ flex: 1 30px; /* Два значення: flex-grow | flex-shrink (flex-basis змінюється на 0) */ flex: 2 2; /* Три значення: flex-grow | flex-shrink | flex-basis */ flex: 2 2 10%; /* Глобальні значення */ flex: inherit; flex: initial; flex: unset;
<'flex-grow'>ширину flex елемента відносно ширин всіх сусідніх елементів. Перегляньте {{cssxref("<number>")}} задля детального опису. Від'ємні значення вважаються невірними. Приймає значення 1, коли воно не вказується явно.<'flex-shrink'>flex-shrink flex елемента. Перегляньте {{cssxref("<number>")}} задля детального опису. Від'ємні значення вважаються невірними. Приймає значення 1, коли воно не вказується явно.<'flex-basis'>базис flex елемента. Може приймати будь-яке значення, з тих, що можуть приймати параметри width і height. Значення 0 має мати одиницю виміру, аби уникнути трактування його, як значення гнучкості. Приймає значення 0%, коли воно не вказується явно.none0 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('Example','100%','60')}}
| Специфікація | Стан | Коментар |
|---|---|---|
| {{SpecName('CSS3 Flexbox', '#flex-property', 'flex')}} | {{Spec2('CSS3 Flexbox')}} | Загальне визначення |
{{CompatibilityTable()}}
| Підтримка | Firefox (Gecko) | Chrome | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| Базова підтримка | {{CompatGeckoDesktop("18.0")}}[1] {{CompatGeckoDesktop("20.0")}} {{CompatGeckoDesktop("28.0")}}[2] |
21.0{{property_prefix("-webkit")}} 29.0 |
10.0{{property_prefix("-ms")}}[3] 11.0[3] |
12.10 |
6.1{{property_prefix("-webkit")}} |
| Підтримка | Firefox Mobile (Gecko) | Android | IE Phone | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|
| Базова підтримка | {{CompatUnknown}} | 4.4 | 11 | 12.10 | 7.1{{property_prefix("-webkit")}} |
[1] В Gecko 18.0 {{geckoRelease("18.0")}} та 19.0 {{geckoRelease("19.0")}} підтримка flexbox прихована за налаштуванням about:config пунктом layout.css.flexbox.enabled, котрий по замовчуванню - false.
[2] Багатостроковий flexbox підтримується починаючи з Gecko 28.0 {{geckoRelease("28.0")}}.
В додаток до підтримки непрефіксованого flexbox, у Gecko 48.0 {{geckoRelease("48.0")}} додано підтримку -webkit префіксованої версії властивості з огляду на веб-сумісність з налаштуванням layout.css.prefixes.webkit, котре по замовчуванню дорівнює false. Починаючи з версії Gecko 49.0 {{geckoRelease("49.0")}} це налаштування дорівнює true.
[3] Internet Explorer 10-11 (але не 12+) ігнорує вживання calc() у частині flex синтаксису, що відповідає за властивість flex-basis. Це можна обійти використанням не сокроченого, а повного запису цієї властивості. Перегляньте Flexbug #8 задля більш детального опису. Визначення flex зі значенням без одиниці виміру у частині, що відповідає за flex-basis вважається синтаксично не вірною у цих версіях, а тому її буде проігноровано. Виправити це можна - завжди додаючи одиницю виміру у частині властивості, що відповідає за flex-basis, скороченого запису flex. Перегляньте Flexbug #4 задля більш детільного опису.