[Web 前端 ] 还在用浮动吗?CSS flex布局你了解多少?
cp from :??https://blog.csdn.net/wwwxuewen/article/details/80859764
傳統(tǒng)的布局:圍繞盒子模型(border、margin、padding) ? 定位(position)、浮動(dòng)(float)等。
flex布局又叫彈性布局 , 主要內(nèi)容包括兩大部分有: 容器(父元素)的六個(gè)屬性和項(xiàng)目(子元素)的六個(gè)屬性
?
基本概念:采用 Flex?布局的元素,稱(chēng)為 Flex 容器(flex container),簡(jiǎn)稱(chēng)"容器"。它的所有子元素自動(dòng)成為容器成員,稱(chēng)為 Flex 項(xiàng)目(flex item),簡(jiǎn)稱(chēng)"項(xiàng)目"。
容器默認(rèn)存在兩根軸:水平的主軸(main axis)和垂直的交叉軸(cross axis)。
主軸的開(kāi)始位置(與邊框的交叉點(diǎn))叫做main start,結(jié)束位置叫做main end;交叉軸的開(kāi)始位置叫做cross start,結(jié)束位置叫做cross end。
項(xiàng)目默認(rèn)沿主軸排列。單個(gè)項(xiàng)目占據(jù)的主軸空間叫做main size,占據(jù)的交叉軸空間叫做cross size。
?
一、容器的六個(gè)屬性:
1、flex-direction屬性:決定主軸的方向,有四個(gè)屬性值 ?row | row-reverse | column | column-reverse;
row:默認(rèn),主軸為水平方向,起點(diǎn)在左端;
row-reverse:主軸在水平方向,起點(diǎn)在右端;
column:主軸在垂直方向,起點(diǎn)在上邊;
column-reverse:主軸在垂直方向,起點(diǎn)在下邊;
?
2、flex-wrap屬性:決定當(dāng)一條軸線(xiàn)排不下所有的項(xiàng)目時(shí),是否換行,有三個(gè)屬性值:nowrap | wrap | wrap-reverse;
nowrap:默認(rèn),不換行,當(dāng)排不下時(shí),會(huì)按項(xiàng)目的flex-shrink屬性(見(jiàn)下,項(xiàng)目的縮小比例,默認(rèn)為1)的值來(lái)對(duì)項(xiàng)目進(jìn)行縮小;
wrap:換行,第一行在上方;
wrap-reverse:換行,第一行在下方;
?
3、flex-flow屬性:是flex-direction屬性和flex-wrap屬性的簡(jiǎn)寫(xiě)形式,默認(rèn)值為 row nowrap
?
4、justify-content屬性:定義了項(xiàng)目在主軸上的對(duì)齊方式,有五個(gè)屬性值:flex-start | flex-end | center | space-between | space-around
flex-start:默認(rèn)值,主軸上起點(diǎn)對(duì)齊;
flex-end:主軸上終點(diǎn)對(duì)齊;
center:在主軸上居中;
space-between:兩端(起點(diǎn)和終點(diǎn))對(duì)齊,項(xiàng)目之間的間隔都相等;
space-around:每個(gè)項(xiàng)目?jī)蓚?cè)的間隔相等。所以,項(xiàng)目之間的間隔比項(xiàng)目與邊框的間隔大一倍
??具體的視覺(jué)上的對(duì)齊方式與主軸的方向有關(guān),在主軸方向?yàn)槟J(rèn)情況下(主軸為水平方向,起點(diǎn)在左端):
flex-start:左對(duì)齊;
flex-end:右對(duì)齊;
center:水平居中;
space-between:兩端(左右兩邊)對(duì)齊,項(xiàng)目之間的間隔都相等;
space-around:每個(gè)項(xiàng)目?jī)蓚?cè)(左右兩側(cè))的間隔相等。所以,項(xiàng)目之間的間隔比項(xiàng)目與邊框的間隔大一倍;
?
5、align-items屬性:定義項(xiàng)目在交叉軸上的對(duì)齊方式,有五個(gè)屬性值:flex-start | flex-end | center | baseline | stretch;
flex-start:默認(rèn)值,交叉軸上起點(diǎn)對(duì)齊;
flex-end:交叉軸上終點(diǎn)對(duì)齊;
center:在交叉軸上居中;
baseline:
stretch:
?
6、align-content屬性:定義了多根軸線(xiàn)的對(duì)齊方式。如果項(xiàng)目只有一根軸線(xiàn),該屬性不起作用,有六個(gè)屬性值,flex-start | flex-end | center | space-between | space-around |stretch
stretch(默認(rèn)值):軸線(xiàn)占滿(mǎn)整個(gè)交叉軸。
flex-start:與交叉軸的起點(diǎn)對(duì)齊。
flex-end:與交叉軸的終點(diǎn)對(duì)齊。
center:與交叉軸的中點(diǎn)對(duì)齊。
space-between:與交叉軸兩端對(duì)齊,軸線(xiàn)之間的間隔平均分布。
space-around:每根軸線(xiàn)兩側(cè)的間隔都相等。所以,軸線(xiàn)之間的間隔比軸線(xiàn)與邊框的間隔大一倍。
?
二、項(xiàng)目的屬性
1、order屬性:定義項(xiàng)目的排列順序,數(shù)值越小排列越靠前,默認(rèn)為0,
order:整數(shù)
?
2、flex-grow屬性:定義項(xiàng)目的放大比例,當(dāng)有剩余空間時(shí)即會(huì)根據(jù)該值進(jìn)行放大,默認(rèn)為0,即有剩余空間時(shí)也不放大
如果所有項(xiàng)目的flex-grow屬性都為1,則它們將等分剩余空間(如果有的話(huà))。如果一個(gè)項(xiàng)目的flex-grow屬性為2,其他項(xiàng)目都為1,則前者占據(jù)的剩余空間將比其他項(xiàng)多一倍。
?
3、flex-shrink屬性:定義了項(xiàng)目的縮小比例,默認(rèn)為1,即如果空間不足,該項(xiàng)目將縮小
?
如果所有項(xiàng)目的flex-shrink屬性都為1,當(dāng)空間不足時(shí),都將等比例縮小。如果一個(gè)項(xiàng)目的flex-shrink屬性為0,其他項(xiàng)目都為1,則空間不足時(shí),前者不縮小。
負(fù)值對(duì)該屬性無(wú)效
?
4、flex-basis屬性:定義了在分配多余空間之前,項(xiàng)目占據(jù)的主軸空間(main size)。瀏覽器根據(jù)這個(gè)屬性,計(jì)算主軸是否有多余空間。它的默認(rèn)值為auto,即項(xiàng)目的本來(lái)大小。
可以設(shè)為跟width或height屬性一樣的值(比如350px),則項(xiàng)目將占據(jù)固定空間。
?
5、flex屬性:是flex-grow,flex-shrink 和 flex-basis的簡(jiǎn)寫(xiě),默認(rèn)值為0 1 auto。后兩個(gè)屬性可選
該屬性有兩個(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屬性,如果沒(méi)有父元素,則等同于stretch
有六個(gè)屬性值:auto | flex-start | flex-end | center | baseline | stretch
轉(zhuǎn)載于:https://www.cnblogs.com/0616--ataozhijia/p/9566713.html
總結(jié)
以上是生活随笔為你收集整理的[Web 前端 ] 还在用浮动吗?CSS flex布局你了解多少?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Plan 9是什么
- 下一篇: 前端面试题目汇总摘录(JS 基础篇)