003@React Native的FlexBox布局

React Native的FlexBox布局

彈性盒模型(The Flexible Box Module,又叫Flexbox,意為“彈性布局”,旨在通過彈性的方式來對齊和分布容器中內(nèi)容的空間,使其能適應(yīng)不同屏幕,為盒裝模型提供最大的靈活性。

Flex布局主要思想是:讓容器有能力讓其子項目能夠改變其寬度、高度(甚至是順序),以最佳方式填充可用空間;
React native中的FlexBox是這個規(guī)范的一個子集。

flexbox布局是伸縮容器(container)和伸縮項目(item)組成

Flexbox布局的主體思想是元素可以改變大小以適應(yīng)可用空間,當(dāng)可用空間變大,flex元素伸展大小以填充可用空間,當(dāng)Flex元素超出可用空間將自動縮小??傊現(xiàn)lex元素是可以讓你的布局根據(jù)瀏覽器的大小變化進行自動伸縮。

Flex布局的思想

在CSS中,常規(guī)的布局是基于塊和內(nèi)聯(lián)流方向,而Flex布局是基于flex-flow流,下圖很好解釋了Flex布局的思想

圖片.png

容器默認(rèn)存在兩根軸:水平的主軸(main axis)垂直的交叉軸(cross axis)。主軸的開始位置(與邊框的交叉點)叫做main start,結(jié)束位置叫做main end;交叉軸的開始位置叫做cross start,結(jié)束位置叫做cross end。
項目默認(rèn)沿主軸排列,單個項目占據(jù)的主軸空間叫做main size,占據(jù)的交叉軸空間叫做cross size。

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

圖片.png

Flexbox的常用屬性

伸縮容器的屬性

flexDirection: row | row-reverse | column | column-reverse
該屬性決定主軸的方向(即項目的排列方向)。

row:主軸為水平方向,起點在左端。
row-reverse:主軸為水平方向,起點在右端。
column(默認(rèn)值):主軸為垂直方向,起點在上沿。
column-reverse:主軸為垂直方向,起點在下沿。

圖片.png

justifyContent:flex-start | flex-end | center | space-between | space-around
定義了伸縮項目在主軸線的對齊方式

flex-start(默認(rèn)值):伸縮項目向一行的起始位置靠齊。
flex-end:伸縮項目向一行的結(jié)束位置靠齊。
center:伸縮項目向一行的中間位置靠齊。
space-between:兩端對齊,項目之間的間隔都相等。
space-around:伸縮項目會平均地分布在行里,兩端保留一半的空間。

圖片.png

alignItems: flex-start | flex-end | center | baseline | stretch
定義項目在交叉軸上如何對齊,可以把其想像成側(cè)軸(垂直于主軸)的“對齊方式”。
flex-start:交叉軸的起點對齊。
flex-end:交叉軸的終點對齊 。
center:交叉軸的中點對齊。
baseline:項目的第一行文字的基線對齊。
stretch(默認(rèn)值):如果項目未設(shè)置高度或設(shè)為auto,將占滿整個容器的高度

圖片.png

flexWrap: nowrap | wrap | wrap-reverse
默認(rèn)情況下,項目都排在一條線(又稱"軸線")上。flex-wrap屬性定義,如果一條軸線排不下,如何換行。

nowrap(默認(rèn)值):不換行。
wrap:換行,第一行在上方。
wrap-reverse:換行,第一行在下方。(和wrap相反)

元素屬性

flex
“flex-grow”、“flex-shrink”和“flex-basis”三個屬性的縮寫, 其中第二個和第三個參數(shù)(flex-shrink、flex-basis)是可選參數(shù)。默認(rèn)值為“0 1 auto”。 寬度 = 彈性寬度 * ( flexGrow / sum( flexGorw ) )

圖片.png

alignSelf: “auto | flex-start | flex-end | center | baseline | stretch”
align-self屬性允許單個項目有與其他項目不一樣的對齊方式,可覆蓋align-items屬性。默認(rèn)值為auto,表示繼承父元素的align-items屬性,如果沒有父元素,則等同于stretch。
![](file:///var/folders/85/8d5txcyj32l8qkh809w5bbhm0000gn/T/WizNote/0e1c61e5-65d6-4eb9-8a90-934bbee99fc1/index_files/38176516.png)

屬性列表

alignItems enum('flex-start', 'flex-end', 'center', 'stretch')
alignSelf enum('auto', 'flex-start', 'flex-end', 'center', 'stretch')

borderBottomWidth number
borderLeftWidth number
borderRightWidth number
borderTopWidth number
borderWidth number
bottom number

flex number
flexDirection enum('row', 'column')
flexWrap enum('wrap', 'nowrap')
height number

justifyContent enum('flex-start', 'flex-end', 'center', 'space-between', 'space-around')

left number
margin number
marginBottom number
marginHorizontal number
marginLeft number
marginRight number
marginTop number
marginVertical number

padding number
paddingBottom number
paddingHorizontal number
paddingLeft number
paddingRight number
paddingTop number
paddingVertical number

position enum('absolute', 'relative')
right number
top number
width number

參考資料

一起來點React Native 旋之華(復(fù)制地址在網(wǎng)頁新地址打開)

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

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

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