您當前位置>首頁 » 新聞資訊 » 小(xiǎo)程序相(xiàng)關 >
微(wēi)信小(xiǎo)程序頁面布局之彈性布局-Flex
發表時(shí)間(jiān):2020-9-25
發布人(rén):葵宇科(kē)技(jì)
浏覽次數(shù):69
一(yī)、Flex 布局是(shì)什(shén)麽?
Flex 是(shì) Flexible Box 的(de)縮寫,意為(w♥☆èi)"彈性布局",用(¥÷δyòng)來(lái)為(wèi)盒狀模型提供最大(dà)的(de)靈活性。∑₩×✔
任何一(yī)個(gè)容器(qì)都(dōu)可(kě∑♣∞)以指定為(wèi) Flex 布局。
.box{
display: flex;
}
行(xíng)內(nèi)元素也(yě)可(kě)以"$✔α使用(yòng) Flex 布局。
.box{
display: inline-flex;
}
Webkit 內(nèi)核的(de)浏覽器(qì),必須加上(shàng)-w₩λΩebkit前綴。
.box{
display: -webkit-flex; /* Safari */
display: flex;
}
注意,設為(wèi) Flex 布局以後,子(zǐ)元素的(de)fλ♠ loat、clear和(hé)vertical-align屬性将失效。
二、基本概念
采用(yòng) Flex 布局的(de)元素,稱為(wèi) Flex 容器(q≤≥ì)(flex container₽← ☆9;,簡稱"容器(qì)"。它的(de)所有 (yǒu)子(zǐ)元素自(zì)動成為(wèi)容器(qì)成員(yuán)≈∏★÷,稱為(wèi) Flex 項目(flex item♥>φff09;,簡稱"項目"。
容器(qì)默認存在兩根軸:水(shuǐ)平的&&(de)主軸(main axis)和(hé)垂直的(de)交叉軸↔"∞xff08;cross axis)。主軸的(de)δΩ開(kāi)始位置(與邊框的(de)交叉✔≠點)叫做(zuò)main start,結束位置叫做(zuò)>€ main end;交叉軸的(de)開(kāi)始位置叫做(z₩¥uò)cross start,結束位置叫做(zuò)✔$©≠cross end。
項目默認沿主軸排列。單個(gè)項目占據的(de)主軸空(kōng)間(jiān)叫做(z©∏ uò)main size,占據的(de≥§)交叉軸空(kōng)間(jiān)叫做(zuò)cross size。
三、容器(qì)的(de)屬性
以下(xià)6個(gè)屬性設置在容器(qì)上(shàng)。
flex-direction
flex-wrap
flex-flow
justify-content
align-items
align-content
3.1 flex-direction屬性
flex-direction屬性決定主軸的(de)方向(即項目的β•(de)排列方向)。
.box {
flex-direction: row | row-reverse | column | column-reverse;
}
它可(kě)能(néng)有(yǒu)4個(gè)值。
row(默認值):主軸為(wèi)水(shuǐ)平方★πΩ向,起點在左端。
row-reverse:主軸為(wèi)水(shuǐ)平方向ÿ"π♥0c;起點在右端。
column:主軸為(wèi)垂直方向>α,起點在上(shàng)沿。
column-reverse:主軸為(wèi)垂直方向✘₩β,起點在下(xià)沿。
3.2 flex-wrap屬性
默認情況下(xià),項目都(dōu)排在一(yī)條線(又(y♥•♠∞òu)稱"軸線")上("shàng)。flex-wrap屬性定義, ↔如(rú)果一(yī)條軸線排不(bù)下(xià),如(rú)何換行(xíng)。β€
.box{
flex-wrap: nowrap | wrap | wrap-reverse;
}
它可(kě)能(néng)取三個(gè)值。
(1)nowrap(默認£≈):不(bù)換行(xíng)。
(2)wrap:換行(xíng),₹φ♣∑第一(yī)行(xíng)在上(shàng)方。
(3)wrap-reverse:換行(x•íng),第一(yī)行(xíng)在下∏∏±★(xià)方。
3.3 flex-flow
flex-flow屬性是(shì)flex-dire¥εεction屬性和(hé)flex-wrap屬性的(de)簡寫形式,默認值為≈ (wèi)row nowrap。
.box {
flex-flow: <flex-direction> || <flex-wrap>;
}
3.4 justify-content屬性
justify-content屬性定義了(le)項目在主軸上(shàng<≠§)的(de)對(duì)齊方式。
.box {
justify-content: flex-start | flex-end | center | space-between | space-around;
}
它可(kě)能(néng)取5個(gè)值,具體(tǐ)對(duì)齊方式與軸 ↕的(de)方向有(yǒu)關。下(xià)面假設主軸為(wèi)從(₩±₽cóng)左到(dào)右。
flex-start(默認值)≥®a;左對(duì)齊
flex-end:右對(duì)齊
center£ f1a; 居中
space-between:兩端對(duì)齊,項目之間(jiān)的(de★↓€)間(jiān)隔都(dōu)相(xiàng)等。
space-around:每個(gè)項目兩側的(de)間(jiān)隔相(xiàng)等。所£♣ 以,項目之間(jiān)的(de)間(jiān)隔比★β項目與邊框的(de)間(jiān)隔大(dà)一(yī)倍。
3.5 align-items屬性
align-items屬性定義項目在交叉軸上(shàng)如(rú)何對(duì)齊。
.box {
align-items: flex-start | flex-end | center | baseline | stretch;
}
它可(kě)能(néng)取5個(gè)值。具體(tǐ)的(de)對(duì)齊∏★εφ方式與交叉軸的(de)方向有(yǒu)關,下(xi©≈§à)面假設交叉軸從(cóng)上(shàng)到(dào)下(xià)。
flex-start:交叉軸的(de)起點對(duì)齊。
flex-end:交叉軸的(de)終點對(duì)齊。
center:交叉軸的(→∞•≈de)中點對(duì)齊。
baseline: 項目的(de)第一(yī)行(xíng)文(wén)字的(de)基線對(duì)©≠↑齊。
stretch(默認值):∏±>如(rú)果項目未設置高(gāo)度或設為(wèi)autoβεφxff0c;将占滿整個(gè)容器(qì)的(de)高(gāo)度。
3.6 align-content屬性
align-content屬性定義了(le)多(duō)根軸線的(™βde)對(duì)齊方式。如(rú)果項目隻有(yǒu)一(yī)根軸線,$Ω©π;該屬性不(bù)起作(zuò)用(yòng)。
.box {
align-content: flex-start | flex-end | center | space-between | space-around | stretch;
}
該屬性可(kě)能(néng)取6個(gè)值。
flex-start:與交叉軸的(de)起點對(duì)齊。
flex-end:與交叉軸的(de)終點對(duì)齊。
ce↓$ £nter:與交叉軸的(de)中點對(duì)齊。≥δ®
space-between:與交叉軸兩端對(duì)齊'f0c;軸線之間(jiān)的(de)間(jiān)隔平均分(fēn)布。
π∏±βspace-around:每根軸線兩側的(de)間(jiān)隔都(dōu)相™≠ε(xiàng)等。所以,軸線之間(jiān)的(de)間(jiān)隔比軸線與邊框的 ☆(de)間(jiān)隔大(dà)一(yī)倍。
stretchλ∞←γ8;默認值):軸線占滿整個£¥≥(gè)交叉軸。
四、項目的(de)屬性
以下(xià)6個(gè)屬性設置在項目上(shàng)。
order
flex-grow
flex-shrink
flex-basis
flex
align-self
4.1 order屬性
order屬性定義項目的(de)排列順序。數(shù)值越小(xiǎo)©♣ελf0c;排列越靠前,默認為(wèi)0。
.item {
order: <integer>;
}
4.2 flex-grow屬性
flex-grow屬性定義項目的(de)放(fàng)大(dà)比例∑÷§,默認為(wèi)0,即如(rú)果存在剩餘空(kōng)間(jiā$α≤n),也(yě)不(bù)放(fàng)大(dà)。
.item {
flex-grow: <number>; /* default 0 */
}
如(rú)果所有(yǒu)項目的(de)flex-grow屬性都(dōu)為("♠¥Ωwèi)1,則它們将等分(fēn)剩餘φ↕空(kōng)間(jiān)(如(rú)果有(yǒu)的(de)話(huà)§δ•>ff09;。如(rú)果一(yī)個(gè)項目的(de)flex-groαλw屬性為(wèi)2,其他(tā)項目都(dōu)為(wèi)1∑ xff0c;則前者占據的(de) 剩餘空(kōng)間(jiān)将比•δ&÷其他(tā)項多(duō)一(yī)倍。
4.3 flex-shrink屬性
flex-shrink屬性定義了(le)項目的(de)縮小(xiǎo)比例∏>Ω£xff0c;默認為(wèi)1,即如(rú)果空(kō≈∞δng)間(jiān)不(bù)足,該項目将 φ縮小(xiǎo)。
.item {
flex-shrink: <number>; /* default 1 */
}
如(rú)果所有(yǒu)項目的(de)flex-shrink₹✔屬性都(dōu)為(wèi)1,當空(kōng)間(jiān)不(bù)足時(sh$¶í),都(dōu)将等比例縮小(xiǎo)。©β如(rú)果一(yī)個(gè)項目的(de)flex-shri©±nk屬性為(wèi)0,其他(tā)項目都(dōu)為(wè¶©'♥i)1,則空(kōng)間(jiān)不(bù)$§¥足時(shí),前者不(bù)縮小(xiǎo)。負值對(duì)該屬性無效。β<
4.4 flex-basis屬性
flex-basis屬性定義了(le)在分(fēn)配多(duō)餘空(kōng)間(jiān)£ 之前,項目占據的(de)主軸空(kōng)間(jiān)≥♠↓∏(main size)。←♠★☆浏覽器(qì)根據這(zhè)個(gè)屬性,計(jì)算(suàn)主軸是(₹€←shì)否有(yǒu)多(duō)餘空(kōng)間∑λ(jiān)。它的(de)默認值為(wèi)auto,即項目的(de)本來(lái)♠₽¶大(dà)小(xiǎo)。
.item {
flex-basis: <length> | auto; /* default auto */
}
它可(kě)以設為(wèi)跟width或height屬性一(yī)樣$✘©×的(de)值(比如(rú)350px),♦ ;則項目将占據固定空(kōng)間(jiān)。
4.5 flex屬性
flex屬性是(shì)flex-grow, flex-shrink 和(hé)>♦ ± flex-basis的(de)簡寫,默認值為(wèi)0 1 auto。>☆©Ω後兩個(gè)屬性可(kě)選。
.item {
flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
}
該屬性有(yǒu)兩個(gè)快(kuài)捷值:auto (1 1 auto)≤§ 和(hé) none (0 0 auto)。
建議(yì)優先使用(yòng)這(zhè)個(gè)屬性∏≈≠xff0c;而不(bù)是(shì)單獨寫三個(gè)分(fēn)離(lí)的(de)屬性$↔,因為(wèi)浏覽器(qì)會(huì)推算(suàn)相(xiàng)關值<✔∑↓。
4.6 align-self屬性
align-self屬性允許單個(gè)項目有(yǒu)與其他(tā)項目γ¥♠不(bù)一(yī)樣的(de)對(duì)齊方式,可(kě)覆蓋align✘≥©-items屬性。默認值為(wèi)auto,表示繼承父元素的(de)align-i♠ $tems屬性,如(rú)果沒有(yǒu)父元素,則等同于stret ₽ch。
.item {
align-self: auto | flex-start | flex-end | center | baseline | stretch;
}
該屬性可(kě)能(néng)取6個(gè)值,除了(¥←le)auto,其他(tā)都(dōu)與align-α₹items屬性完全一(yī)緻。
原文(wén)出自(zì):http://www.ruanyifeβ ≤ng.com/blog/2015/07/flex-grammar.html