在 Flexbox 中,部分屬性只能用於父元素,部分只能用於子元素。
1 | display: flex | inline-flex; |
要使用 Flexbox 必須先定義一個父元素容器,並於父元素定義 display
屬性為 flex
或 inline-flex
。
flex
:Flexbox 的常用屬性,後方的元素會換行inline-flex
:類似於 inline-block
加 flex
,在後方的元素不會換行範例程式碼:
See the Pen flex vs inline-flex by Priscilla Lin (@Priscilla_Lin) on CodePen.
1 | flex-direction: row<default> | row-reverse | column | column-reverese; |
flex-direction
可以指定元素的排列方式。
row
:預設值,橫向排列column
:直向排列row-reverse
:橫向反向排列column-reverse
:直向反向排列範例程式碼:
See the Pen flex-direction by Priscilla Lin (@Priscilla_Lin) on CodePen.
1 | flex-wrap: nowrap<default> | wrap | wrap-reverse; |
當多個子元素超過父元素的寬度時,flex-wrap
可以決定是否將子元素換行。
nowrap
:預設值,不換行,子元素會縮短以符合父元素的寬度wrap
:換行,超出父元素寬度的子元素會換到下一行wrap-reverse
:反向換行,也就是各行的順序會顛倒範例程式碼:
See the Pen flex-wrap by Priscilla Lin (@Priscilla_Lin) on CodePen.
1 | justify-content: flex-start<default> | flex-end | center | space-between | space-around; |
justify-content
決定水平對齊的位置。
flex-start
:預設值,靠左對齊flex-end
:靠右對齊center
:置中對齊space-between
:平均分配,左右貼齊父元素space-around
:平均分配,類似 margin 的概念space-evenly
:平均分配,每個間距都是相同寬度範例程式碼:
See the Pen justify-content by Priscilla Lin (@Priscilla_Lin) on CodePen.
1 | align-items: flex-start | flex-end | center | stretch<default> | baseline; |
align-items
決定垂直對齊的位置。
flex-start
:靠上方對齊flex-end
:靠下方對齊center
:置中對齊stretch
:預設值,所有元素撐開與父元素同高baseline
:依元素的基準線對齊範例程式碼:
See the Pen align-items by Priscilla Lin (@Priscilla_Lin) on CodePen.
1 | align-content: flex-start | flex-end | center | stretch<default> | space-between | space-around; |
align-content
針對多行的元素進行排序。
flex-start
:靠上方對齊flex-end
:靠下方對齊center
:置中對齊stretch
:預設值,所有元素撐開與父元素同高space-between
:平均分配,上下貼齊父元素space-around
:平均分配,類似 margin 概念範例程式碼:
See the Pen align-content by Priscilla Lin (@Priscilla_Lin) on CodePen.
1 | align-self: flex-start | flex-end | center | stretch | baseline; |
align-self
針對各別子元素進行排序,不受其他影響。
flex-start
:靠上方對齊flex-end
:靠下方對齊center
:置中對齊stretch
:子元素撐開與父元素同高baseline
:依元素的基準線對齊這邊我直接拿上面的 align-items
的範例來改,可以看到 2 號橘色方塊被我設定為 align-center: center
,所以不管怎麼排序,橘色方塊都會垂直置中。
範例程式碼:
See the Pen align-self by Priscilla Lin (@Priscilla_Lin) on CodePen.
1 | order: <number>; |
order
可以決定子元素的排序順序,只能給定數字。
範例程式碼:
See the Pen order by Priscilla Lin (@Priscilla_Lin) on CodePen.
1 | flex: <flex-grow> <flex-shrink> <flex-basis>; |
flex
是由三個值組成,如果只給定一個值,則是給定 flex-grow
。
1 | flex-grow: <number>; |
當子元素的總寬度不超過父元素時,flex-grow
會分配剩餘的空間給特定子元素。
flex-grow
的預設值為 0,設定 1 以上的值會進行彈性變化。
範例程式碼:
See the Pen flex-grow by Priscilla Lin (@Priscilla_Lin) on CodePen.
1 | flex-shrink: <number>; |
當子元素的總寬度超過父元素時,flex-shrink
會將特定子元素的寬度依比例縮減。
flex-shrink
的預設值為 1,設為 0 的話不會進行彈性變化。
範例程式碼:
See the Pen flex-shrink by Priscilla Lin (@Priscilla_Lin) on CodePen.
1 | flex-basis: <number>; |
flex-basis
會指定子元素在主軸 (main axis) 上的初始大小。
flex-direction: row
為更改子元素寬度,反之 flex-direction: column
則更改子元素高度。
flex-basis
的預設值為 0,也可以設定為 auto,表示以子元素自己的大小為基準。
範例程式碼:
See the Pen flex-basis by Priscilla Lin (@Priscilla_Lin) on CodePen.
文章結束囉~如果我的文章對你有幫助,可以幫我拍個手,感謝支持!