display: flex

display:flex; 在父層加,子層內元素就會並排

1. 預設父層寬400px,若子曾有4個容器,每個200px,總和大於父層寬度,此時因為flex特性的關係,會自動計算寬度給予子層的4個容器,不會有超出的問題

2. 若子層中的4個容器,其中一個改變高度,因為flex特性的關係,其他3個若沒有寫高度的話,也會跟著改變成相同高度

→ 主軸對齊:justify-content

↓ 交錯軸對齊:alogn-items

 

外容器

display: flex Flex 排版起手式

要改成 flex 排版,外容器一定要加 display: flex

  • flex
  • inline-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> px or <num> % : 預設值為 auto

flex 全部寫在一起

結合剛剛介紹的三項 flex-growflex-shrinkflex-basis

  • 例如: flex: 1 2 50px
  • 預設值: 0 1 auto
  • 如果只寫一個數值,代表 flex-grow
    • flow: 1 ( 如果只有一個子元素設置,代表該子元素佔滿「 外容器所有的剩餘空間 」 )

 

參考文章: https://yakimhsu.com/project/project_w6_CSS_flex.html

參考文章:https://wcc723.github.io/css/2017/07/21/css-flex/

文章標籤
全站熱搜
創作者介紹
創作者 Kevin Chang 的頭像
Kevin Chang

Kevin Chang的前端學習部落格

Kevin Chang 發表在 痞客邦 留言(0) 人氣(16)