Skip to content

JiaHongL/flexbox-demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Flexbox

ㄧ、Column Row 認識

  • column(欄)(方向為上到下)
  • row(列)(方向為左到右)

二、容器與項目(container && item) 認識

alt text

三、排列方式&主軸&交叉軸 概念

I.flexbox:排列方式分為四種(加上reverse為相反方向)

  • row:從左到右.
  • row-reverse:從右到左.
  • column:從上到下.
  • column-reverse:從下到上.

II.理解排列方式與主軸和交叉軸的關係

alt text 圖片來源

  • main-axis:主軸
  • main-start:主軸-起點邊界
  • main-end:主軸-結束邊界
  • main-size:項目與容器的主軸大小
  • cross-axis:交叉軸
  • cross-start:交叉軸-起點邊界
  • cross-end:交叉軸-結束邊界
  • cross-size:項目與容器的交叉軸大小

PS:主軸的方向並不是固定的,而是由排列方式來決定主軸(main-axis)的方向,另外與主軸垂直的稱為交叉軸(cross-axis).

III.排列方式圖解

1.row 圖示 (排列方向為從左到右)
(以下圖示:紅色箭頭=main-axis、黃色箭頭=cross-axis) alt text

圖示來源

2.row-reverse 圖示 (排列方向為從右到左)
alt text
PS:其實就是主軸方向翻轉,而交叉軸的方向不變.


3.column 圖示 (排列方向為從上到下)

PS:column排列方式為上到下,所以主軸方向(main-axis)就會變成上到下.


4.column-reverse 圖示 (排列方向為從下到上)


排列方式 主軸方向 交叉軸方向
row 從左到右 從上到下
row-reverse 從右到左 從上到下
column 從上到下 從左到右
column-reverse 從下到上 從左到右

ㄧ ~ 三 介紹的都是在講flexbox的相關概念,再來就是藉由flexbox語法上的實作,來理解屬性上的設定與應用.


四、容器相關屬性 (container)

屬性 作用 範例
display 設定為flexbox佈局 demo
flex-direction 項目 排列方向 demo
flex-wrap 項目 換行方式 demo
justify-content 項目 主軸對齊方式 demo
align-items 項目 交叉軸對齊方式(單行) demo
align-content 項目 交叉軸對齊方式(多行) demo
屬性合併 作用 範例
flex-flow direction + wrap demo
屬性名稱 說明
參數 功能
display 設定為flexbox佈局
flex 被設定元素會有block的特性
inline-flex 被設定元素會有inline-block的特性
flex-direction 容器項目 排列方向
row (默認值) 從左到右排列項目
row-reverse 從右到左排列項目
column 從上到下排列項目
column-reverse 從下到上排列項目
flex-wrap 容器項目 換行方式
nowrap (默認值) 不換行
wrap 換行 多餘項目排在下一行
wrap-reverse 換行 多餘項目排在上一行
justify-content 容器項目 主軸(main-axis)對齊方式
flex-start (默認值) 往起始邊界對齊
center 往中間對齊
flex-end 往結束邊界對齊
space-between 第一項目靠起始邊界.最後項目靠終點邊界.其餘空白平均分配剩下項目左右兩側
space-around 將空白平均分配每個項目左右兩側
space-evenly 將空白平均分配給項目之間的間隔
align-items 容器項目 交錯軸(cross-axis)對齊方式
flex-start 往起始邊界對齊
center 往中間對齊
flex-end 往結束邊界對齊
baseline 每個項目基線對齊
stretch (默認值) 將項目的cross-size撐開,填滿與容器相同cross-size.
align-content 當有多行時.以行為單位的交錯軸(cross-axis)對齊方式
flex-start 往起始邊界對齊
center 往中間對齊
flex-end 往結束邊界對齊
space-between 第一行靠起始邊界.最後行靠結束邊界.其餘空白平均分配剩下每行左右兩側
stretch (默認值) 將每行的cross-size撐開.填滿與容器相同cross-size

五、項目相關屬性 (item)

屬性 作用 範例
flex-basis 項目 初始大小 (main-size) demo
flex-grow 項目 彈性增長比例. demo
flex-shrink 項目 彈性壓縮比例. demo
order 項目 排列順序 demo
align-self 項目 本身交叉軸對齊方式(覆蓋容器align-items的設定) demo
屬性合併 作用 範例
flex grow + shrink + basis demo
屬性名稱 說明
參數 功能
flex-basis 項目初始大小(main-size)
auto 或 0 (默認值) 項目原始大小
元素單位 如:%、em、rem、px
flex-grow 項目增長比例
數字(默認值:0) 依照數字比例彈性增長
0 不做彈性增長
flex-shrink 項目壓縮比例
數字 (默認值:1) 依照數字比例彈性壓縮
0 不做彈性壓縮
order 項目排列順序
數字(默認值:0) 數字越小排越前面
align-self 項目本身 交叉軸對齊方式(覆蓋容器align-items的設定)
flex-start 往起始邊界對齊
center 往中間對齊
flex-end 往結束邊界對齊
baseline 每個項目基線對齊
stretch (默認值) 將項目的cross-size撐開.填滿與容器相同cross-size
合併屬性 參數 簡化 說明
flex flex-grow + flex-shrink + flex-basis
0 1 auto flex:initial main-size會彈性壓縮;flex項目默認設定
0 0 auto flex:none; 固定main-size.為項目原始的main-size
1 1 auto flex:auto; main-size會自動彈性

六、範例

1.範例一

置中對齊

2.範例二

常見佈局