1. 程式人生 > >Flex佈局詳解以及使用方式

Flex佈局詳解以及使用方式

Flex處理邏輯

Flex簡介

由兩條軸組成的容器,類似初中數學的直角座標系

主軸的開始位置(與邊框的交叉點)叫做main start,結束位置叫做main end;交叉軸的開始位置叫做cross start,結束位置叫做cross end

Flex基本屬性

flex-direction(主軸的方向【橫豎都能定義成主軸】)

- row - 從左到右
- row-rewerse - 從右到左
- column - 從上到下
另一個同理

.box { flex-direction: row | row-reverse | column | column-reverse; }

flex-wrap(如何換行)

- nowrap - 不換行
- wrap - 換行
- wrap-reverse - 降序排序換行,第一行在最下方

.box{ flex-wrap: nowrap | wrap | wrap-reverse; }

flex-flow(以上兩屬性的簡寫)

.box { flex-flow: <flex-direction> || <flex-wrap>; }

Flex對齊方式

justify-content(在主軸上的對齊方式【direction設定的才是主軸】)

- flex-start(預設值):主軸開始位置對齊(假設主軸為row:左對齊,假設主軸為column:頂端對齊)
- flex-end:主軸結束位置對齊(假設主軸為row:右對齊,假設主軸為column:底端對齊)
- center: 主軸中間位置對齊(假設主軸為row:水平居中,假設主軸為column:垂直居中)
- space-between:兩端對齊,專案之間的間隔都相等。
- space-around:每個專案兩側的間隔相等。所以,專案之間的間隔比專案與邊框的間隔大一倍。

.box { justify-content: flex-start | flex-end | center | space-between | space-around; }

align-items(在次軸【又叫交叉軸】上的對齊方式)

- flex-start:交叉軸開始位置對齊。
- flex-end:交叉軸結束位置對齊。
- center:交叉軸中間位置對齊。
- baseline: 元素第一行文字底端【類似下劃線】為基線做對齊。
- stretch(預設值):如果專案未設定高度或設為auto,將佔滿整個容器的高度。

.box { align-items: flex-start | flex-end | center | baseline | stretch; }

align-content(多根軸線的對齊方式)

因為軸線是按照主軸依次排下的,所以可以將軸線簡單的理解為次軸【又叫交叉軸】

- flex-start:與交叉軸的起點對齊。
- flex-end:與交叉軸的終點對齊。
- center:與交叉軸的中點對齊。
- space-between:與交叉軸兩端對齊,軸線之間的間隔平均分佈。
- space-around:每根軸線兩側的間隔都相等。所以,軸線之間的間隔比軸線與邊框的間隔大一倍。
- stretch(預設值):軸線佔滿整個交叉軸。

元素基本屬性

order(元素排序)

數值越小越靠前

.item { order: <integer>; }

align-self - 對齊樣式覆蓋

預設值為auto,表示繼承父元素的align-items屬性,如果沒有父元素,則等同於stretch

.item { align-self: auto | flex-start | flex-end | center | baseline | stretch; }

元素縮放屬性

flex-grow - 放大

預設為0,就算有剩餘空間也不放大 其他數值,按照所有數值總和的比例增大

flex-shrink - 縮小

預設為0,就算有剩餘空間也不縮小 其他數值,按照所有數值總和的比例縮小

flex-basis - 未縮放時固定的大小(大多沒啥用)

固定大小,預設值auto,即與原大小相同

.item { flex-basis: <length> | auto; /* default auto */ }

flex - 以上三個的簡寫

.item { flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ] }