css 用來排版的新語法,以前都是用 float 來做排版,但相當麻煩,用了 flex 變的相當輕鬆好用
Flex 外容器屬性
display
必須宣告才能使用 flex
flex
inline-flex
: 相當於inline-block
+flex
1 2 3 |
|
flex-direction
排序方向
row
: 水平 - Items are placed the same as the text direction.row-reverse
: 水平反轉 - Items are placed opposite to the text direction.column
: 垂直 - Items are placed top to bottom.column-reverse
: 垂直反轉 - Items are placed bottom to top
1 2 3 4 |
|
flex-wrap
超出範圍時的處理方式
nowrap
: 換行 (default)wrap
: 不換行wrap-reverse
: 換行時反轉
1 2 3 4 |
|
flex-flow
flex-direction
與 flex-wrap
的縮寫
1 2 3 4 |
|
justify-content
水平軸對齊設定
flex-start
: Items align to the left side of the container.flex-end
: Items align to the right side of the container.center
: Items align at the center of the container.space-between
: Items display with equal spacing between them. 平均分配內容元素,左右元素將會與 main start 和 main end 貼齊space-around
: Items display with equal spacing around them. 平均分配內容元素,間距也是平均分配
1 2 3 4 |
|
align-items
交錯軸的對齊設定
flex-start
: Items align to the top of the container.flex-end
: Items align to the bottom of the container.center
: Items align at the vertical center of the container.baseline
: Items display at the baseline of the container. 以所有內容元素的基線作為對齊標準stretch
: Items are stretched to fit the container. 將內容元素全部撐開至 Flexbox 的高度 (default)
1 2 3 4 |
|
align-content
align-items
多行版本,和 justify-content
反過來
注意 stretch 在高度被限制的情況下不會正常伸展。
flex-start
: Lines are packed at the top of the container.flex-end
: Lines are packed at the bottom of the container.center
: Lines are packed at the vertical center of the container.space-between
: Lines display with equal spacing between them. 將第一行與最後一行分別對齊最上方與最下方space-around
: Lines display with equal spacing around them. 每行平均分配間距stretch
: Lines are stretched to fit the container.內容元素全部撐開(default)
1 2 3 4 |
|
Flex 內元件屬性
flex
包含了 flex-grow
flex-shrink
flex-basis
flex-grow
: 數字,無單位,當子元素的 flex-basis 長度「小」於它自己在父元素分配到的長度,按照數字做相對應的「伸展」比例分配,預設值為 0,不會進行彈性變化,不可為負值,設為 1 則會進行彈性變化。flex-shrink
: 數字,無單位,當子元素的 flex-basis 長度「大」於它自己在父元素分配到的長度,按照數字做相對應的「壓縮」比例分配,預設值為 1,設為 0 的話不會進行彈性變化,不可為負值。flex-basis
: 子元素的基本大小,作為父元素的大小比較基準,預設值為 0,也因為預設值為 0,所以沒有設定此屬性的時候,會以直接採用 flex-grow 屬性,flex-basis 也可以設為 auto,如果設為 auto,就表示子元素以自己的基本大小為單位。
1 2 3 |
|
align-self
align-self
的作用在於覆寫已經套用 align-items
的屬性,可調整內元件交錯軸的對齊設定(主軸線則不能另外做設定),且可以個別設定單一元件的值。
auto
flex-start
flex-end
center
baseline
stretch
1 2 3 4 |
|
order
可重新定義元件的排列順序,順序會依據數值的大小排列。
1 2 3 4 |
|
playground
See the Pen rrYjvX by leonji (@leonji) on CodePen.
參考文件