此篇會簡單介紹 FlexBox,以及 flex container 的排列方向設置、對齊設置技巧。
Flexible Box Layout 簡稱為 FlexBox(彈性盒子),為了適應不同螢幕尺寸而誕生的佈局模式。
強調在於盒子內層的子元素,加入 橫向
、縱向
兩種方向概念,使其具有更加 彈性
的特點,透過這兩種方向的縮放特性,讓排版上不管是橫向對齊或縱向對齊都方便不少。
從 2009 年問世到寫文章的當下 2021 年,flex box
在眾多排版方式的年代,瀏覽器支援度高達 99%
穩站霸主地位。
好比排版界的
聖母峰
。
Flexbox 是由外層容器(flex container)與內層子元素(flex items)所組合而成。
內層子元素會依照外層容器 主軸
、交錯軸
所設置的,對齊方式、排列方式作為排版的準則。
優勢:
float
更加方便、彈性。Bootstrap
也支援 flex 語法。Flexbox 外層容器,設置內層子元素排列的方向以及對齊的方式。
分為兩個主要軸線(主軸、交錯軸),透過方向性(起點、終點)設置元素的排列方向。
屬性:
display
:設置 flex
排版方式。(若沒有設置,後續大部分屬性都不會起作用)
display: flex;
內層子元素排列方向,依據 main axis(主軸)、cross axis(交錯軸)設置而定。
交錯軸
永遠和 主軸
垂直,所以只需要設置主軸就好。(也沒有語法可以設置 交錯軸
方向)
flex-direction
row
:水平排列。flex-direction: row;
flex-wrap
滿版伸縮
)nowrap
:不換行。flex-wrap: nowrap;
預設排列方向:水平排列、由左至右
flex-flow
flex-flow: column-reverse nowrap;
排列方向:垂直排列、由下至上
在設置對齊時,可以想像有一條假想線,而元素都依照假想線來對齊。(下方圖片會掩飾主軸的假想線)
justify-content
主軸
的對齊方式。(會依照不同的設置來分配多餘的空白空間)flex-start
:對齊 主軸
的起點。align-items
flex-start
:對齊 交錯軸
的起點。預設對齊方式:主軸靠起點(左)、交錯軸靠起點對齊(上)。(假想線會貼齊元素上方)
align-content
交錯軸
多行的對齊方式。(會依照不同的設置來分配多餘的空白空間)一張圖解釋 align-items
、align-content
兩者都設置 center
的差異:
對齊方式:主軸靠起點(左)、交錯軸靠中間對齊。(假想線會貼齊元素中間)
align-items:
align-content:
優勢:
子元素
不會產生 collapsing margins(邊緣重疊) 的問題:因為建立 flex formatting context(FFC)。float
屬性的子元素重疊。限制:
子元素
有效,孫元素
就沒效了。flex item,使用上比較複雜,會在稍後的篇章做介紹。