簡介
FLEX 的對齊方法就類似是 Google 文件 或 WORD 的文字對齊工具
CSS Flexible Box Layout Module
在 W3C 有介紹到 Flexbox 就是為了優化設計的 CSS 模型 ( Module ) ,最重要的是 具有靈活佈局的功能 ,這使用在自適應網頁上排版設計就變得更加簡單方便。
而且用 Can I use 查詢幾乎所有的瀏覽器都有支援
Flexbox 的架構
要使用 Flexbox 模型佈局,就必須在全部元素外加上一個 外層容器 包著並設定,而全部被包著的元素才會是可排版佈局的 內層元件
外層容器
在 HTML 建立一個外層範圍 container
1 | <div class="container"></div> |
並在 CSS 設定範圍內具有 Flexbox 佈局功能
1 | .container { |
軸線
- 在模型內的軸線稱為 主軸 ( main axis ) 和 交錯軸 ( cross axis ) 。
- 軸線不能稱為 水平軸 和 垂直軸,因為主軸可以是左右水平方向也可以是上下垂直方向。
屬性
- 外層容器的屬性為全部內層相同設定
內層元件
在 container
放入 item
作為 內層元件 ,然後才把文字、圖片相關內容的元素放到 item
內。
1 | <div class="container"> |
- 內層元件
- 必須被 外層容器 包著才會作用
- 作為可靈活排版的元件
- 避免排版被內容的設定影響,文字、圖片相關內容的元素要放到元件內
Flexbox 的屬性
外層容器
display
設定值分兩種flex
為區塊元素inline-flex
為行內元素
1 | .container { |
行內元素 inline-flex
會因為 內容元件 的寬高而改變外層大小
在沒設定寬度時,2 者差別如下圖
內層元件
- 排列方式
flex-direction
元件排列順序flex-wrap
換行順序
- 元件對齊
排列方向 flex-direction
- 排列方式分兩種 水平 和 垂直
- 水平排列又分 靠左 (向右依序排列)、靠右對齊 (向左依序排列)
水平排列
1 | .container { |
垂直排列
轉成直式的 由上至下、由下至上
1 | .container { |
換行順序
預設在內容太多時,預設會自動縮小全部內容的寬度,讓全部內容都能被看到,但這樣就會改變原來的樣子
所以就可使用換行 flex-wrap: wrap
,每行下方的行間都會平均等高,相反的 flex-wrap: wrap-reverse;
平均等高的行間會在每行上方。
1 | .container { |
對齊
- 水平 X 軸對齊
justify-content
- 垂直 Y 軸對齊 分兩種
- 當內容只有一行時
align-items
- 內容有多行時
align-content
- 當內容只有一行時
水平的左右對齊
1 | .container { |
垂直的上下對齊
上下對齊分 單行的 align-items
、多行的 align-items
屬性對齊方式,值除了多 space-around
、space-between
的不同,其他都是相同的。
單行和多行的上下對齊差別在
單行會有每列的間距、多行不會有每列之間的間距
1 | .container { |
要注意若是有設定換行是使用
flex-wrap: wrap-reverse
由下至上換行時,上下排列的方向就會是相反的由下至上排列。