display flex-flow ( flex-direction flex-wrap 的組合 )、 flex-direction flex-wrap justify-content align-items
  • 如果想要區塊元素作並排,可於父層使用 display:flex;
  • flex 都是設定在父層上,讓子層元素有 flex 的效果。
  • 內層 ( 子層 )
  • 內層會用到的屬性: flex-grow flex-shrink flex-basis order align-self
  • 子元素們會依照比例做伸縮調整,不會超出父層寬度。 ( CodePen 範例 )
  • 子元素會自動延伸與同層內最高元素的高度。 ( CodePen 範例 )
  • 範例中 .box 2 沒有設定高度,但它會自動延伸與子元素中高度最高的 .box3 同高。
  • 資料流走直向主軸就是直,資料流走橫向主軸就是橫的
  • 資料流向 = 主軸;交叉軸 = 次軸
  • 以上方圖示為例,資料流向 ( 主軸 ) 橫向,交叉軸 ( 次軸 ) 就會是直向。如果資料流向 ( 主軸 ) 為直向,交叉軸 ( 次軸 ) 就會變橫向。
  • 資料流向 ( 主軸 ) 橫向預設為橫向 row
  • ❒ 外層屬性

    先判斷「 主軸方向 flex-direction 」,再進行「 主軸 flex-wrap justify-content 」與「 次軸 align-items 」設定。

    flex-direction 方向

    row ( 預設 ) ,左至右。 column ,上至下。 row-reverse 左至右反向。 column-reverse 上至下反向。

    flex-wrap 換行

    nowrap ( 預設 ),不換行。 wrap ,換行。 wrapwrap-reverse ,依主軸決定直或橫的反向換行。

    flex-flow

    flex-flow flex-direction flex-wrap 縮寫,依序寫入 flex-direction flex-wrap 。 例如: flex-flow:row wrap;

    justify-content 主軸對齊方式

    主軸對齊使用 justify-content ,次軸對齊使用 align-items
    flex-start : 對齊主軸起點 flex-end : 對齊主軸終點 center : 對齊主軸水平線 space-between : 平均分配每個元素,首元素與末元素會分別對齊主軸起點與終點。 space-around :與 space-around 很像,但中間留白與左右邊線距離不一樣 。 space-evenly : 與 space-around 很像,但中間留白與左右邊線距離一樣 。

    align-items 次軸對齊方式

    主軸對齊使用 justify-content ,次軸對齊使用 align-items

    Codepen 範例

    區塊設定 flex , 而 align-items 預設會是 stretch ,會自動延伸與同層內最高元素
    的高度 ,如果遇到隔壁排內容比圖片還多,圖片會因此產生變形。
    可加上 align-items: center 就可讓圖片恢復原比例。

    2. align-items:baseline; 是做什麼的 ?

    此出處於六角學院課程中問與答。

    Baseline 是英文或其他西方文字會有的文字基線,讓英文字母能夠依照此基準線對齊,可以參考此 連結

    align-items: baseline 就是讓並排的元素的交錯軸依照 baseline 對齊,因此可以看到若有元素中有文字內容看起來就會是下圖二這樣。

    ▲ 來源: align-items - CSS Reference

    3. 如何辨別 align-items:baseline; align-items:flex-start; ?

    父層使用 row & align-items:baseline; ( CodePen 範例 ) :

    font-size 相同 : 範例 ❶ 中看起來和 align-items:flex-start; 很像,都是靠上對齊。 font-size 不同 :
  • 使用 baseline :和範例 ❶ 相比,範例 ❷ 中就會比較明顯看到, .box 們依內容文字基準線對齊。 boxC 高度是最高的,其他 .box 會用自己的 baseline 去對齊最高的 boxC 。
  • 使用 flex-start :和範例 ❷ 相比,範例❸ 中可見對齊基準依次軸的起點位置。
  •