flex彈性盒模型

Flex 是 Flexible Box 的縮寫,意為"彈性布局",用來為盒狀模型提供最大的靈活性。

彈性盒模型主要就分為 “伸縮容器”和“伸縮項(xiàng)目” 。伸縮容器我們可以簡單的理解為彈性盒模型父元素,伸縮項(xiàng)目就是彈性盒模型的子元素。

需要注意的是,設(shè)為 Flex 布局以后,子元素的float、clear和vertical-align屬性將失效。

<div>
    <p>1</p><p>2</p><p>3</p><p>4</p>
</div>

伸縮容器(flex container)

div{
    display : flex | inline-flex;
    flex-direction : row | row-reverse | column | column-reverse;
    flex-wrap : nowrap | wrap | wrap-reverse; 
    /* flex-flow : flex-direction, flex-wrap;*/
    justify-content : flex-start | flex-end | center | space-between | space-around;
    align-items : flex-start | flex-end | center | baseline | stretch;
    align-content : flex-start | flex-end | center | space-between | space-around | stretch;
}

1. flex-direction

決定主軸方向(項(xiàng)目的排列方向):

row : 水平方向 從左往右
row-reverse : 水平方向 從右往左
column : 豎直方向 從上往下
column-reverse : 豎直方向 從下往上

2. flex-wrap

是否換行

nowrap : 不換行
wrap : 換行 交叉軸方向從上往下 如果主軸是豎直方向,那么就是從左往右
wrap-reverse : 交叉軸方向從下往上 如果主軸是豎直方向,那么就是從右往左

3. flex-flow

flex-flow屬性是flex-direction屬性和flex-wrap屬性的簡寫形式。

4. justify-content

項(xiàng)目在主軸上的對(duì)齊方式

flex-start : 主軸起點(diǎn)對(duì)齊
flex-end : 主軸終點(diǎn)對(duì)齊
center : 主軸中點(diǎn)對(duì)齊
space-between : 兩端對(duì)齊,項(xiàng)目之間的間隔都相等
space-around : 每個(gè)項(xiàng)目兩側(cè)的間隔相等。所以,項(xiàng)目之間的間隔比項(xiàng)目與邊框的間隔大一倍。

5. align-items

項(xiàng)目在交叉軸上如何對(duì)齊

stretch : 如果項(xiàng)目未設(shè)置高度或設(shè)為auto,將占滿整個(gè)容器的高度
flex-start : 交叉軸的起點(diǎn)對(duì)齊
flex-end : 交叉軸終點(diǎn)對(duì)齊
center : 交叉軸中點(diǎn)對(duì)齊
baseline : 項(xiàng)目的第一行文字的基線對(duì)齊

6. align-items

定義了多根軸線的對(duì)齊方式。如果項(xiàng)目只有一根軸線,該屬性不起作用。

stretch : 項(xiàng)目實(shí)際高度會(huì)撐滿整個(gè)交叉軸的長度
flex-start : 交叉軸起點(diǎn)對(duì)齊
flex-end : 交叉軸終點(diǎn)對(duì)齊
center : 交叉軸中點(diǎn)對(duì)齊
space-between : 與交叉軸兩端對(duì)齊,軸線之間的間隔平均分布
space-around : 每根軸線兩側(cè)的間隔都相等。所以,軸線之間的間隔比軸線與邊框的間隔大一倍

伸縮項(xiàng)目(flex item)

p{
    order : 0;
    flex-grow : 0;
    flex-shrink : 1;
    flex-basis :  auto;
    /* flex : flex: none ; */
    align-self : auto | flex-start | flex-end | center | baseline | stretch;
}

1. order

order屬性定義項(xiàng)目的排列順序。數(shù)值越小,排列越靠前,默認(rèn)為0。

2. flex-grow

如何分配父元素多余部分,數(shù)值越大的分的越多,默認(rèn)為0(不分配)

3. flex-shrink

父元素寬度不夠的時(shí)候,項(xiàng)目是否收縮,數(shù)值越大的收縮的越多,默認(rèn)為1。

4. flex-basis

定義了在分配多余空間之前,項(xiàng)目占據(jù)的主軸空間(main size)。瀏覽器根據(jù)這個(gè)屬性,計(jì)算主軸是否有多余空間。它的默認(rèn)值為auto,即項(xiàng)目的本來大小。

5. flex

flex屬性是flex-grow, flex-shrink 和 flex-basis的簡寫,默認(rèn)值為0 1 auto。
該屬性有兩個(gè)快捷值:auto (1 1 auto) 和 none (0 0 auto)。

6. align-self

單個(gè)項(xiàng)目有與其他項(xiàng)目不一樣的對(duì)齊方式,可覆蓋align-items屬性。默認(rèn)值為auto,表示繼承父元素的align-items屬性,如果沒有父元素,則等同于stretch。

auto : 繼承父元素的align-items屬性
stretch : 項(xiàng)目實(shí)際高度會(huì)撐滿整個(gè)交叉軸的長度
flex-start : 交叉軸起點(diǎn)對(duì)齊
flex-end : 交叉軸終點(diǎn)對(duì)齊
center : 交叉軸中點(diǎn)對(duì)齊
baseline : 項(xiàng)目的第一行文字的基線對(duì)齊

參考:阮一峰的網(wǎng)絡(luò)日志

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容