flex
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since â¨2015å¹´9æâ©.
flex CSS ç®å屿§è®¾ç½®äºå¼¹æ§é¡¹ç®å¦ä½å¢å¤§æç¼©å°ä»¥éåºå
¶å¼¹æ§å®¹å¨ä¸å¯ç¨ç空é´ã
å°è¯ä¸ä¸
flex: 1;
flex: 2;
flex: 1 30px;
flex: 1 1 100px;
<section class="default-example" id="default-example">
<div class="transition-all" id="example-element">Change me</div>
<div>flex: 1</div>
<div>flex: 1</div>
</section>
.default-example {
border: 1px solid #c5c5c5;
width: auto;
max-height: 300px;
display: flex;
}
.default-example > div {
background-color: rgba(0, 0, 255, 0.2);
border: 3px solid blue;
margin: 10px;
flex-grow: 1;
flex-shrink: 1;
flex-basis: 0;
}
#example-element {
background-color: rgba(255, 0, 200, 0.2);
border: 3px solid rebeccapurple;
}
æå屿§
æ¤å±æ§æ¯ä»¥ä¸ CSS 屿§çç®åï¼
è¯æ³
/* å
³é®åå¼ */
flex: auto;
flex: initial;
flex: none;
/* åå¼ï¼æ å使°åï¼flex-grow
flex-basis æ¤æ¶çäº 0ã */
flex: 2;
/* åå¼ï¼å®½åº¦/é«åº¦ï¼flex-basis */
flex: 10em;
flex: 30px;
flex: min-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: revert;
flex: revert-layer;
flex: unset;
å¯ä»¥ä½¿ç¨ä¸ä¸ªï¼ä¸¤ä¸ªæä¸ä¸ªå¼æ¥æå® flex 屿§ã
-
åå¼è¯æ³ï¼å¼å¿ é¡»æ¯ä»¥ä¸ä¹ä¸ï¼
- ä¸ä¸ª
<flex-grow>çææå¼ï¼æ¤æ¶ç®å伿©å±ä¸ºflex: <flex-grow> 1 0ã - ä¸ä¸ª
<flex-basis>çææå¼ï¼æ¤æ¶ç®å伿©å±ä¸ºflex: 1 1 <flex-basis>ã - å
³é®å
noneæè å ¨å±å ³é®åä¹ä¸ã
- ä¸ä¸ª
-
åå¼è¯æ³ï¼
- 第ä¸ä¸ªå¼å¿
é¡»æ¯ä¸ä¸ª
flex-growçææå¼ã - 第äºä¸ªå¼å¿
é¡»æ¯ä»¥ä¸ä¹ä¸ï¼
- ä¸ä¸ª
flex-shrinkçææå¼ï¼æ¤æ¶ç®å伿©å±ä¸ºflex: <flex-grow> <flex-shrink> 0ã - ä¸ä¸ª
flex-basisçææå¼ï¼æ¤æ¶ç®å伿©å±ä¸ºflex: <flex-grow> 1 <flex-basis>ã
- ä¸ä¸ª
- 第ä¸ä¸ªå¼å¿
é¡»æ¯ä¸ä¸ª
-
ä¸å¼è¯æ³ï¼å¼å¿ é¡»æç §ä»¥ä¸é¡ºåºæå®ï¼
- ä¸ä¸ª
flex-growçææå¼ã - ä¸ä¸ª
flex-shrinkçææå¼ã - ä¸ä¸ª
flex-basisçææå¼ã
- ä¸ä¸ª
åå¼
initial-
å ç´ ä¼æ ¹æ®èªèº«å®½é«è®¾ç½®å°ºå¯¸ãå®ä¼ç¼©çèªèº«ä»¥éåº flex 容å¨ï¼ä½ä¸ä¼ä¼¸é¿å¹¶å¸æ¶ flex 容å¨ä¸çé¢å¤èªç±ç©ºé´æ¥éåº flex 容å¨ãç¸å½äºå°å±æ§è®¾ç½®ä¸º"
flex: 0 1 auto"ã auto-
å ç´ ä¼æ ¹æ®èªèº«ç宽度ä¸é«åº¦æ¥ç¡®å®å°ºå¯¸ï¼ä½æ¯ä¼ä¼¸é¿å¹¶å¸æ¶ flex 容å¨ä¸é¢å¤çèªç±ç©ºé´ï¼ä¹ä¼ç¼©çèªèº«æ¥éåº flex 容å¨ãè¿ç¸å½äºå°å±æ§è®¾ç½®ä¸º "
flex: 1 1 auto". none-
å ç´ ä¼æ ¹æ®èªèº«å®½é«æ¥è®¾ç½®å°ºå¯¸ã宿¯å®å ¨éå¼¹æ§çï¼æ¢ä¸ä¼ç¼©çï¼ä¹ä¸ä¼ä¼¸é¿æ¥éåº flex 容å¨ãç¸å½äºå°å±æ§è®¾ç½®ä¸º"
flex: 0 0 auto"ã <'flex-grow'>-
å®ä¹ flex 项ç®ç
flex-growãè´å¼æ æãçç¥æ¶é»è®¤å¼ä¸º 1ã (åå§å¼ä¸º0) <'flex-shrink'>-
å®ä¹ flex å ç´ ç
flex-shrinkãè´å¼æ æãçç¥æ¶é»è®¤å¼ä¸º1ã (åå§å¼ä¸º1) <'flex-basis'>-
å®ä¹ flex å ç´ ç
flex-basis屿§ãè¥å¼ä¸º0ï¼åå¿ é¡»å ä¸åä½ï¼ä»¥å 被è§ä½ä¼¸ç¼©æ§ãçç¥æ¶é»è®¤å¼ä¸º 0ã(åå§å¼ä¸º auto)
æè¿°
大夿°æ
åµä¸ï¼å¼åè
éè¦å° flex 设置为以ä¸å¼ä¹ä¸ï¼ autoï¼initialï¼noneï¼æä¸ä¸ªæ å使£æ°ãè¦æ¥çè¿äºå¼çææï¼è¯·å°è¯è°æ´ä»¥ä¸ flex 容å¨ç大å°ï¼
é»è®¤æ
åµä¸ï¼å
ç´ ä¸ä¼ç¼©çè³å°äºå
容æ¡å°ºå¯¸ï¼è¥æ³æ¹åè¿ä¸ç¶åµï¼è¯·è®¾ç½®å
ç´ çmin-width ä¸ min-height屿§ã
å½¢å¼å®ä¹
| åå§å¼ | 该ç®åæå¯¹åºçæ¯ä¸ªå±æ§ï¼
|
|---|---|
| éç¨å ç´ | flex items, including in-flow pseudo-elements |
| æ¯å¦æ¯ç»§æ¿å±æ§ | å¦ |
| 计ç®å¼ | 该ç®åæå¯¹åºçæ¯ä¸ªå±æ§ï¼
|
| å¨ç»ç±»å | 该ç®åæå¯¹åºçæ¯ä¸ªå±æ§ï¼
|
å½¢å¼è¯æ³
flex =
none |
[ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
<flex-grow> =
<number [0,â]>
<flex-shrink> =
<number [0,â]>
<flex-basis> =
content |
<'width'>
<width> =
auto |
<length-percentage [0,â]> |
min-content |
max-content |
fit-content( <length-percentage [0,â]> ) |
<calc-size()> |
<anchor-size()> |
stretch |
fit-content |
contain
<length-percentage> =
<length> |
<percentage>
<calc-size()> =
calc-size( <calc-size-basis> , <calc-sum> )
<anchor-size()> =
anchor-size( [ <anchor-name> || <anchor-size> ]? , <length-percentage>? )
<calc-size-basis> =
<size-keyword> |
<calc-size()> |
any |
<calc-sum>
<calc-sum> =
<calc-product> [ [ '+' | '-' ] <calc-product> ]*
<anchor-name> =
<dashed-ident>
<anchor-size> =
width |
height |
block |
inline |
self-block |
self-inline
<calc-product> =
<calc-value> [ [ '*' | / ] <calc-value> ]*
<calc-value> =
<number> |
<dimension> |
<percentage> |
<calc-keyword> |
( <calc-sum> )
<calc-keyword> =
e |
pi |
infinity |
-infinity |
NaN
示ä¾
>设置 flex: auto
HTML
<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>
CSS
#flex-container {
display: flex;
flex-direction: row;
}
#flex-container > .flex-item {
flex: auto;
}
#flex-container > .raw-item {
width: 5rem;
}
Result
è§è
| Specification |
|---|
| CSS Flexible Box Layout Module Level 1 > # flex-property > |
| åå§å¼ | 该ç®åæå¯¹åºçæ¯ä¸ªå±æ§ï¼
|
|---|---|
| éç¨å ç´ | flex items, including in-flow pseudo-elements |
| æ¯å¦æ¯ç»§æ¿å±æ§ | å¦ |
| 计ç®å¼ | 该ç®åæå¯¹åºçæ¯ä¸ªå±æ§ï¼
|
| å¨ç»ç±»å | 该ç®åæå¯¹åºçæ¯ä¸ªå±æ§ï¼
|
æµè§å¨å ¼å®¹æ§
åè§
- CSS Flexbox æåï¼Flexbox åºæ¬æ¦å¿µ
- CSS Flexbox æåï¼æ§å¶ Flex åå ç´ å¨ä¸»è½´ä¸çæ¯ä¾