--- title: flex slug: Web/CSS/flex tags: - CSS - CSS Flexible Boxes - Tham khảo - Tham số CSS translation_of: Web/CSS/flex ---
/* Giá trị cơ bản */ flex: auto; flex: initial; flex: none; flex: 2; /* Một giá trị thể hiện cho flex-grow */ flex: 2; /* Một giá trị (độ rộng hoặc chiều cao) thể hiện cho flex-basis */ flex: 10em; flex: 30px; /* Hai giá trị thể hiện cho flex-grow (1) và flex-basis (30px) */ /* Bởi vì 30px nên thể hiện cho flex-basis */ flex: 1 30px; /* Hai giá trị thể hiện cho flex-grow và flex-shrink */ flex: 2 2; /* Ba giá trị thể hiện cho flex-grow và flex-shrink và flex-basis */ flex: 2 2 10%; /* Nhữg giá trị khái quát */ flex: inherit; flex: initial; flex: unset;
Trong hầu hết các trường hợp, Bạn nên sử dụng những giá trị sau: auto, initial, none, hoặc những số dương duy nhất. Để nhìn thấy hiệu quả của những giá trị này thử thay đổi kích thước của những "thành phần cha" sau đây:
<div class="flex-container"> <div class="item auto">auto</div> <div class="item auto">auto</div> <div class="item auto">auto</div> </div> <div class="flex-container"> <div class="item auto">auto</div> <div class="item initial">initial</div> <div class="item initial">initial</div> </div> <div class="flex-container"> <div class="item auto">auto</div> <div class="item auto">auto</div> <div class="item none">none</div> </div> <div class="flex-container"> <div class="item initial">initial</div> <div class="item none">none</div> <div class="item none">none</div> </div> <div class="flex-container"> <div class="item four">4</div> <div class="item two">2</div> <div class="item one">1</div> </div>
* { box-sizing: border-box; } .flex-container { background-color: #F4F7F8; resize: horizontal; overflow: hidden; display: flex; margin: 1em; } .item { margin: 1em; padding: 0.5em; width: 110px; min-width: 0; background-color: #1B5385; color: white; font-family: monospace; font-size: 13px; } .initial { flex: initial; } .auto { flex: auto; } .none { flex: none; } .four { flex: 4; } .two { flex: 2; } .one { flex: 1; }
{{EmbedLiveSample("flex", 1200, 370, "", "", "example-outcome-frame")}}
auto
initial
none
<số dương>
Theo quy định, thì "thành phần con" không thu nhỏ lại quá kích thước nhỏ nhất mà nó cho phép. Để thay đổi kích thước nhỏ nhất bạn có thể dùng: {{cssxref("min-width")}} hoặc {{cssxref("min-height")}}.
{{cssinfo}}
Tham số flex có thể sử dụng với một, hai hoặc 3 giá trị.
Cú pháp với 1 giá trị: Giá trị đó có thể là:
<flex-grow>
.<flex-basis>
.none
, auto
, or initial
.Cú pháp với 2 giá trị: giá trị đầu phải là giá trị đơn lẻ {{cssxref("<number>")}} được xem là <flex-grow>
. Giá trị thứ 2 phải thuộc 1 trong 2 giá trị sau:
<flex-shrink>
.<flex-basis>
.Cú pháp với 3 giá trị:
<flex-grow>
.<flex-shrink>
.<flex-basis>
.<'flex-grow'>
<'flex-shrink'>
<'flex-basis'>
none
Khi sử dụng một hoặc nhiều giá trị đơn lẻ, flex-basis sẽ đổi từ auto tới 0. Để biết thêm chi tiết có thể xem bản draft Flexible Box Layout Module.
{{csssyntax}}
#flex-container { display: flex; flex-direction: row; } #flex-container > .flex-item { 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')}}
Specification | Status | Comment |
---|---|---|
{{SpecName('CSS3 Flexbox', '#flex-property', 'flex')}} | {{Spec2('CSS3 Flexbox')}} | Initial definition |
{{CompatibilityTable()}}
Feature | Firefox (Gecko) | Chrome | Edge | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic support | {{CompatGeckoDesktop("18.0")}}[1] {{CompatGeckoDesktop("20.0")}} {{CompatGeckoDesktop("28.0")}}[2] |
21.0{{property_prefix("-webkit")}} 29.0 |
{{CompatVersionUnknown}}{{property_prefix("-webkit")}} {{CompatVersionUnknown}} |
10.0{{property_prefix("-ms")}}[3] 11.0[3] |
12.10 |
6.1{{property_prefix("-webkit")}} |
Feature | Firefox Mobile (Gecko) | Android | Edge | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | {{CompatUnknown}} | 4.4 | {{CompatVersionUnknown}}{{property_prefix("-webkit")}} {{CompatVersionUnknown}} |
11 | 12.10 | 7.1{{property_prefix("-webkit")}} |
[1] In Gecko 18.0 {{geckoRelease("18.0")}} và 19.0 {{geckoRelease("19.0")}} tính năng flexbox hổ trợ ẩn trong about:config
với cấu hình layout.css.flexbox.enabled
, giá trị mặc định là false
.
[2] Multi-line flexbox được hỗ trợ từ Gecko 28.0 {{geckoRelease("28.0")}}.
Thêm nửa về hỗ trợ unprefixed, Gecko 48.0 {{geckoRelease("48.0")}} được hỗ trợ với tiền tố -webkit
vì lý do tương thích xem layout.css.prefixes.webkit
, giá trị mặc định to false
. Từ Gecko 49.0 {{geckoRelease("49.0")}} giá trị mặc định là true
.
[3] Internet Explorer 10-11 (but not 12+) bỏ qua việc sử dụng calc()
trong phần flex-basis part của cú pháp flex
. Có thể dùng longhand thay thế cho shorthand như một sự thay thế. Nhìn Flexbug #8 để tìm hiểu thêm. Thêm nửa cú pháp flex với một giá trị đơn lẻ trong flex-basis
được xem như không hợp lệ trong những version trên và vì vậy sẽ bị phớt lờ . Một cách để giải quyết vấn đề này là luôn luôn thêm một đơn vị cho phần flex-basis
trong cú pháp đơn giản. Nhìn Flexbug #4 để tìm hiểu thêm.