display: flex
display:flex; 在父層加,子層內元素就會並排
1. 預設父層寬400px,若子曾有4個容器,每個200px,總和大於父層寬度,此時因為flex特性的關係,會自動計算寬度給予子層的4個容器,不會有超出的問題
2. 若子層中的4個容器,其中一個改變高度,因為flex特性的關係,其他3個若沒有寫高度的話,也會跟著改變成相同高度
→ 主軸對齊:justify-content
↓ 交錯軸對齊:alogn-items
外容器
display: flex Flex 排版起手式
要改成 flex 排版,外容器一定要加 display: flex
flexinline-flex- 作用類似於
inline-block+flex
- 作用類似於
justify-content 水平對齊方式
( 正確應該說「 主軸線對齊 」,因為更改 flex-direction 有可能會換方向 )
flex-start靠左對齊預設值flex-end靠右對齊center置中對齊space-between分散對齊( 左右邊不留間距 )space-around分散對齊( 左右邊有留間距,最旁邊的間距為內間距的一半 )space-evenly均分對齊( 左右邊有留間距,所有間距一致 )- 比較新的屬性值,要注意瀏覽器支援度問題。
align-items 垂直對齊方式
( 正確應該說「 交錯線對齊 」,因為更改 flex-direction 有可能會換方向 )
stretch元素裡的內容撐滿對齊預設值- 會計算最長的元素高度,把所有元素都設成一樣高度
flex-start靠上對齊flex-end靠下對齊center置中對齊baseline元素裡的文字內容對齊 flex 基準線
flex-direction 排列方向
row水平排列預設值row-reverse反向的水平排列column垂直排列column-reverse反向的垂直排列
注意:如改成垂直排列
column,調整水平 & 垂直的方式會倒過來
justify-content會變成「 調整垂直對齊 」align-items會變成 「 調整水平對齊
justify-cotent的flex-start會變成 「 靠右對齊 」justify-cotent的flex-end會變成 「 靠左對齊 」
flex-wrap 元素超過範圍是否換行
當頁面寬度過窄,以致於內容無法完整呈現的時候,是否要進行換行。
nowrap: 所有元素排在同一行預設值wrap: 元素會換行wrap-reverse: 元素會換行,且反轉方向
flex-flow 排列方向 與 斷行方式
其實就是另一種縮寫,結合 flex-direction & flex-wrap。
<'flex-direction'> <'lex-wrap'>
align-content 多行元素的垂直對齊
其實就是 align-items 的多行版本,裡面有需要換行的元素就可以使用 align-content,若元素只有單行則無作用。
stretch: 所有元素 撐滿上下邊預設值flex-start: 緊密 靠上對齊flex-end: 緊密 靠下對齊center: Lines: 緊密 置中對齊space-between: 分散對齊( 上下不留間距 )space-around: 分散對齊( 上下有留間距 )
子元素
order 單個元素的排列順序
設置 order 可以重新定義元件的排列順序,順序會依據數值的大小排列。 ( 這在 RWD 想改元素位置,應該非常實用! )
整數:預設值為 0- 順序: 最小(可能為負數)→ 最大
align-self 該元素的垂直對齊方式
flex-start靠上對齊flex-end靠下對齊center置中對齊baseline基準線對齊stretch撐滿上下邊
flex-grow 該元素佔用容器剩餘的比例
可以當作是 平分外層容器「 剩餘的位置 」。 如果子元素加起來的空間大於外容器,設置 flow-grow 則不會起作用。
整數:預設值為 0
flex-shrink 該元素壓縮比例
當外層空間不夠時,壓縮元素的比例
整數:預設值為 1
flex-basis 該元素的基準值,類似於 min-width
可使用不同單位,意思是一開始就會分配給該元素多少的空間,不會被壓縮到。 如果同時設置 flex-basis 跟 width, width 會被蓋掉。
<num> pxor<num> %:預設值為 auto
flex 全部寫在一起
結合剛剛介紹的三項 flex-grow、flex-shrink、flex-basis
- 例如:
flex: 1 2 50px - 預設值:
0 1 auto - 如果只寫一個數值,代表
flex-growflow: 1( 如果只有一個子元素設置,代表該子元素佔滿「 外容器所有的剩餘空間 」 )