做自(zì)由與創造的先行者

Flex布局項目屬性

小(xiǎo)程序開(kāi)發手冊

設置項目,用(yòng)于設置項目的尺寸、位置,以及對(duì)項目的對(duì)齊方式做特殊設置。

order 屬性

設置項目沿主軸方向上(shàng)的排列順序,數值越小(xiǎo),排列越靠前。屬性值爲整數。

.item{

order: 0(默認值) | <integer>

}

flex-shrink 屬性

當項目在主軸方向上(shàng)溢出時(shí),通過設置項目收縮因子來(lái)壓縮項目适應容器。屬性值爲項目的收縮因子,屬性值取非負數。

.item{

flex-shrink: 1(默認值) | <number>

}

.item1{

width: 120px;

flex-shrink: 2;

}

.item2{

width: 150px;

flex-shrink: 3;

}

.item3{// 項目3未設置flex-shrink,默認flex-shrink值爲1

width: 180px;

}

爲了(le)加深理(lǐ)解,我們舉個例子:

一個寬度爲400px的容器,裏面的三個項目width分别爲120px,150px,180px。分别對(duì)這(zhè)項目1和(hé)項目2設置flex-shrink值爲2和(hé)3。

.container{

display: flex;

width: 400px; // 容器寬度爲400px

}

在這(zhè)個例子中,項目溢出 400 - (120 + 150 + 180) = -50px。計(jì)算(suàn)壓縮量時(shí)總權重爲各個項目的寬度乘以flex-shrink的總和(hé),這(zhè)個例子壓縮總權重爲120 * 2 + 150 * 3+ 180 * 1 = 870。各個項目壓縮空(kōng)間大(dà)小(xiǎo)爲總溢出空(kōng)間乘以項目寬度乘以flex-shrink除以總權重:

item1的最終寬度爲:120 - 50 * 120 * 2 / 870 ≈ 106px

item2的最終寬度爲:150 - 50 * 150 * 3 / 870 ≈ 124px

item3的最終寬度爲:180 - 50 * 180 * 1 / 870 ≈ 169px

其中計(jì)算(suàn)時(shí)候值如果爲小(xiǎo)數,則向下(xià)取整。

需要注意一點,當項目的壓縮因子相加小(xiǎo)于1時(shí),參與計(jì)算(suàn)的溢出空(kōng)間不等于完整的溢出空(kōng)間。在上(shàng)面例子的基礎上(shàng),我們改變各個項目的flex-shrink。

.container{

display: flex;

width: 400px; // 容器寬度爲400px

}

.item1{

width: 120px;

flex-shrink: 0.1;

}

.item2{

width: 150px;

flex-shrink: 0.2;

}

.item3{

width: 180px;

flex-shrink: 0.3;

}

總權重爲:120 * 0.1 + 150 * 0.2 + 180 * 0.3 = 96。參與計(jì)算(suàn)的溢出空(kōng)間不再是50px,而是50 * (0.1 + 0.2 + 0.3) / 1 =30:

item1的最終寬度爲:120 - 30 * 120 * 0.1 / 96 ≈ 116px

item2的最終寬度爲:150 - 30 * 150 * 0.2 / 96 ≈ 140px

item3的最終寬度爲:180 - 30 * 180 * 0.3 / 96 ≈ 163px

flex-grow 屬性

當項目在主軸方向上(shàng)還有剩餘空(kōng)間時(shí),通過設置項目擴張因子進行剩餘空(kōng)間的分配。屬性值爲項目的擴張因子,屬性值取非負數。

.item{

flex-grow: 0(默認值) | <number>

}

爲了(le)加深理(lǐ)解,我們舉個例子:

一個寬度爲400px的容器,裏面的三個項目width分别爲80px,120px,140px。分别對(duì)這(zhè)項目1和(hé)項目2設置flex-grow值爲3和(hé)1。

.container{

display: flex;

width: 400px; // 容器寬度爲400px

}

.item1{

width: 80px;

flex-grow: 3;

}

.item2{

width: 120px;

flex-grow: 1;

}

.item3{// 項目3未設置flex-grow,默認flex-grow值爲0

width: 140px;

}

在這(zhè)個例子中,容器的剩餘空(kōng)間爲 400 - (80 + 120 + 140) = 60px。剩餘空(kōng)間按 60 / (3 + 1 + 0) = 15px進行分配:

item1的最終寬度爲:80+ (15 * 3) = 125px

item2的最終寬度爲:120 + (15 * 1) = 135px

item3的最終寬度爲:140 + (15 * 0) =140px

需要注意一點,當項目的擴張因子相加小(xiǎo)于1時(shí),剩餘空(kōng)間按除以1進行分配。在上(shàng)面例子的基礎上(shàng),我們改變各個項目的flex-grow。

.container{

display: flex;

width: 400px; // 容器寬度爲400px

}

.item1{

width: 50px;

flex-grow: 0.1;

}

.item2{

width: 80px;

flex-grow: 0.3;

}

.item3{

width: 110px;

flex-grow: 0.2;

}

在這(zhè)個例子中,容器的剩餘空(kōng)間爲 400 - (50 + 80 + 110) = 160px。由于項目的flex-grow相加0.1 + 0.3 + 0.2 = 0.6小(xiǎo)于1,剩餘空(kōng)間按 160 / 1 = 160px劃分。例子中的項目寬度分别爲:

item1的最終寬度爲:50 + (160 * 0.1) = 66px

item2的最終寬度爲:80 + (160 * 0.3) = 128px

item3的最終寬度爲:110 + (160 * 0.2) = 142px

flex-basis 屬性

當容器設置flex-direction爲row或row-reverse時(shí),flex-basis和(hé)width同時(shí)存在,flex-basis優先級高(gāo)于width,也(yě)就是此時(shí)flex-basis代替項目的width屬性。

當容器設置flex-direction爲column或column-reverse時(shí),flex-basis和(hé)height同時(shí)存在,flex-basis優先級高(gāo)于height,也(yě)就是此時(shí)flex-basis代替項目的height屬性。

.item{

flex-basis: auto(默認值) | <number>px

}

flex 屬性

是flex-grow,flex-shrink,flex-basis的簡寫方式。值設置爲none,等價于00 auto。值設置爲auto,等價于1 1 auto。

.item{

flex: none | auto | @flex-grow @flex-shrink@flex-basis

}

align-self 屬性

設置項目在行中交叉軸方向上(shàng)的對(duì)齊方式,用(yòng)于覆蓋容器的align-items,這(zhè)麽做可以對(duì)項目的對(duì)齊方式做特殊處理(lǐ)。默認屬性值爲auto,繼承容器的align-items值,當容器沒有設置align-items時(shí),屬性值爲stretch。

.item{

align-self: auto(默認值) | flex-start | center | flex-end | baseline |stretch

}

網站(zhàn)建設開(kāi)發|APP設計(jì)開(kāi)發|小(xiǎo)程序建設開(kāi)發
上(shàng)一篇:Flex布局容器屬性