95_css筆記11_css的伸縮流佈局(flex佈局)
阿新 • • 發佈:2018-11-20
一,伸縮佈局的使用
- main axis:主軸
- main start:主軸開始位置
- main end:主軸結束位置
- main size:主軸空間
- cross axis:交叉軸
- cross start:交叉軸開始位置
- cross end:交叉軸結束位置
- cross size:交叉軸空間
- 一般使用:display: flex;
- Webkit 核心的瀏覽器:display: -webkit-flex;
二,父容器的6個特性
- flex-direction:主軸的方向。
- flex-direction: row; // 預設值,主軸為水平方向,起點在左端。
- flex-direction: row-reverse; // 主軸為水平方向,起點在右端。
- flex-direction: column; // 主軸為垂直方向,起點在上。
- flex-direction: column-reverse; // 主軸為垂直方向,起點在下。
- flex-wrap:超出父容器子容器的排列樣式。
- flex-wrap: nowrap; // 預設,不換行
- flex-wrap: wrap; // 換行,第一行在上方。
- flex-wrap: wrap-reverse // 換行,第一行在下方。
- flex-flow:flex-direction 屬性和 flex-wrap 屬性的簡寫形式。
- 預設值為 row nowrap
- flex-flow: <flex-direction> || <flex-wrap>;
- justify-content:子容器在主軸的排列方向。
- justify-content: flex-start; // 預設,左對齊
- justify-content: flex-end; // 右對齊
- justify-content: center; // 居中
- justify-content: space-between; // 兩端對齊,專案之間的間隔都相等。
- justify-content: space-around; // 環繞對齊,每個專案兩側的間隔相等。所以,專案之間的間隔比專案與邊框的間隔大一倍。
- justify-content: flex-start; // 預設,左對齊
- align-items:子容器在交叉軸的排列方向。側軸沒有兩端對齊和環繞對齊
- align-items: flex-start; // 交叉軸的起點對齊。
- align-items: flex-end; // 交叉軸的終點對齊。
- align-items: center; // 交叉軸的中點對齊。
- align-items: baseline; // 專案的第一行文字的基線對齊。
- align-items: stretch; // 預設,如果專案未設定高度或設為auto,將佔滿整個容器的高度。
- align-content:多根軸線的對齊方式,如果專案只有一根軸線,該屬性不起作用
- align-content: flex-start; // 與交叉軸的起點對齊
- align-content; flex-end; // 與交叉軸的終點對齊。
- align-content: center; // 與交叉軸的中點對齊。
- align-content: space-between;// 與交叉軸兩端對齊,軸線之間的間隔平均分佈。
- align-content: space-around; // 每根軸線兩側的間隔都相等。所以,軸線之間的間隔比軸線與邊框的間隔大一倍。
- align-content: stretch; // 預設 軸線佔滿整個交叉軸。
三,子容器的6個特性
- order:子容器的排列順序
- order: num;
- 定義專案的排列順序。數值越小,排列越靠前,預設為 0
- flex-grow:子容器剩餘空間的拉伸比例
- flex-grow: <number>; /* default 0 */
- 定義子容器的伸縮比例。按照該比例給子容器分配空間
- flex-shrink:子容器超出空間的壓縮比例
- flex-shrink: <number>; /* default 0 */
- 定義了子容器彈性收縮的比例
- 此屬性要生效,父容器的 flex-wrap 屬性要設定為 nowrap
- flex-basis:子容器在不伸縮情況下的原始尺寸
- flex-basis: <length> | auto; /* default auto */
- 定義了子容器在不伸縮情況下的原始尺寸,主軸為橫向時代表寬度,主軸為縱向時代表高度
- flex:子元素的 flex 屬性是 flex-grow,flex-shrink 和 flex-basis 的簡寫
- 是 flex-grow,flex-shrink 和 flex-basis 的簡寫,預設值為 0 1 auto。後兩個屬性可選
- 有兩個快捷值:auto (1 1 auto) 和 none (0 0 auto)
- align-self:
- 允許單個專案有與其他專案不一樣的對齊方式,可覆蓋父容器 align-items 屬性
- 預設值為 auto,表示繼承父元素的 align-items屬性,如果沒有父元素,則等同於 stretch
-
align-self: auto; // 繼承父元素的 align-items 屬性
align-self: flex-start; // 交叉軸的起點對齊。
align-self: flex-end; // 交叉軸的終點對齊。
align-self: center; // 交叉軸的中點對齊。
align-self: baseline; // 專案的第一行文字的基線對齊。
align-self: stretch; // 預設,如果專案未設定高度或設為auto,將佔滿整個容器的高度。
四,flex佈局的相關注意點
1,換行問題:flex-wrap屬性
- flex-wrap: nowrap;不換行
- flex-wrap: wrap;換行,上邊排滿
- flex-wrap: wrap-reverse;換行,下邊排滿
- 如果伸縮容器的高度比換行之後所有伸縮項的高度還要高, 那麼系統會自動將剩餘空間平分之後新增給每一行
2,換行對齊問題