React Native基礎(chǔ)之 Flexbox布局

一、什么是Flexbox?
 彈性盒模型(The Flexible Box Module),又叫Flexbox,意為“彈性布局”,旨在通過彈性的方式來對(duì)齊和分布容器中內(nèi)容的空間,使其能適應(yīng)不同的屏幕,為盒裝模型提供最大的靈活性。
 Flex布局的主要思想是:讓容器有能力讓其子項(xiàng)目能夠改變其寬度、高度(甚至是順序),以最佳方式填充可用空間。
二、Flex布局基于flex-flow流
 容器默認(rèn)存在兩根軸:水平的主軸(main axis)垂直的交叉軸(cross axis)。主軸的開始位置(與邊框的交叉點(diǎn))叫做main start,結(jié)束位置叫做main end;交叉軸的開始位置叫做cross start,結(jié)束位置叫做cross end。
 項(xiàng)目默認(rèn)沿主軸排列,單個(gè)項(xiàng)目占據(jù)的主軸空間叫做main size,占據(jù)的交叉軸空間叫做cross size。


 根據(jù)伸縮項(xiàng)目排列方式的不同,主軸和側(cè)軸方向也有所變化:

三、Flex常用屬性
 1.容器屬性
 react-native中容器屬性有四種,分別是:flexDirction、flexWrap、justifyContent、alignItems。
 1.1 flexDirection屬性
 該屬性決定主軸的方向(即項(xiàng)目的排列方向)。
 row:主軸為水平方向,起點(diǎn)在左端。
 row-reverse:主軸為水平方向,起點(diǎn)在右端。
 column(默認(rèn)值 ):主軸為垂直方向,起點(diǎn)在上沿。
 column-reverse:主軸為垂直方向,起點(diǎn)在下沿。



 1.2 flexWrap屬性
 默認(rèn)情況下,項(xiàng)目都排在一條線上(又稱“軸線”)上。flex-wrap屬性定義,如果一條軸線排不下,如何換行。


nowrap(默認(rèn)值 ):不換行


wrap:換行,第一行在上方


wrap-reverse:換行,第一行在下方(和wrap 相反,僅在網(wǎng)頁端可用)



 1.3 justifyContent 屬性
 該屬性定義了伸縮項(xiàng)目在主軸線的對(duì)齊方式
 flex-start(默認(rèn)值 ):伸縮項(xiàng)目向一行的起始位置靠齊。
 flex-end:伸縮項(xiàng)目向一行的結(jié)束位置靠齊。
 center:伸縮項(xiàng)目向一行的中間位置靠齊。
 space-between:兩端對(duì)齊,項(xiàng)目之間的間隔都相等。
 space-around:伸縮項(xiàng)目會(huì)平均地分布在行里,兩端保留一半的空間。



 1.4 alignItems屬性
 定義伸縮項(xiàng)目在交叉軸上如何對(duì)齊,可以把其想像成側(cè)軸(垂直于主軸)的 “對(duì)齊方式”。
 flex-start :交叉軸的起點(diǎn)對(duì)齊。

 flex-end:交叉軸的終點(diǎn)對(duì)齊 。
 center:交叉軸的中點(diǎn)對(duì)齊。
 baseline:項(xiàng)目的第一行文字的基線對(duì)齊。(僅在web端可用,react-native不可用)
 stretch(默認(rèn)值):如果項(xiàng)目未設(shè)置高度或設(shè)為 auto,將占滿整個(gè)容器的高度。



 2.元素屬性
 2.1 flex屬性
通過添加flex屬性, 我們明確地將他選為flexbox模式。flex只能指定一個(gè)數(shù)字值,用來決定子元素間獲得相對(duì)權(quán)重的大小,都設(shè)為1則獲得相等的權(quán)重大小,分別設(shè)為1、3、1則獲得的權(quán)重比為1:3:1。

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


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容