React Native 之 FlexBox 布局篇

什么是FlexBox布局?

彈性盒模型(The Flexible Box Module),又叫Flexbox鸥昏,意為“彈性布局”契讲,旨在通過彈性的方式來對(duì)齊和分布容器中內(nèi)容的空間,使其能適應(yīng)不同屏幕料祠,為盒裝模型提供最大的靈活性贾漏。
Flex布局主要思想是:讓容器有能力讓其子項(xiàng)目能夠改變其寬度橙弱、高度(甚至是順序),以最佳方式填充可用空間钞脂;

Flexbox在布局中能夠解決什么問題揣云?

浮動(dòng)布局
各種機(jī)型屏幕的適配
水平和垂直居中
自動(dò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扇调。

Flexbox的常用屬性

** 1. 容器屬性 **
** flexDirection: row | row-reverse | column | column-reverse **
該屬性決定主軸的方向(即項(xiàng)目的排列方向)矿咕。

row:主軸為水平方向,起點(diǎn)在左端狼钮。
row-reverse:主軸為水平方向碳柱,起點(diǎn)在右端。
column(默認(rèn)值):主軸為垂直方向燃领,起點(diǎn)在上沿士聪。
column-reverse:主軸為垂直方向锦援,起點(diǎn)在下沿猛蔽。

** justifyContent:flex-start | flex-end | center | space-between | space-around**
定義了伸縮項(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ì)平均地分布在行里毁枯,兩端保留一半的空間。

** alignItems: flex-start | flex-end | center | baseline | stretch**
定義項(xiàng)目在交叉軸上如何對(duì)齊叮称,可以把其想像成次軸(垂直于主軸)的“對(duì)齊方式”种玛。

flex-start:交叉軸的起點(diǎn)對(duì)齊。
flex-end:交叉軸的終點(diǎn)對(duì)齊 瓤檐。
center:交叉軸的中點(diǎn)對(duì)齊赂韵。
baseline:項(xiàng)目的第一行文字的基線對(duì)齊。
stretch(默認(rèn)值):如果項(xiàng)目未設(shè)置高度或設(shè)為auto挠蛉,將占滿整個(gè)容器的高度祭示。

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

nowrap(默認(rèn)值):不換行汇陆。
wrap:換行怒炸,第一行在上方。
wrap-reverse:換行瞬测,第一行在下方横媚。(和wrap相反)

** 2. 元素屬性**

** flex **

“flex-grow”、“flex-shrink”和“flex-basis”三個(gè)屬性的縮寫月趟, 其中第二個(gè)和第三個(gè)參數(shù)(flex-shrink灯蝴、flex-basis)是可選參數(shù)。
默認(rèn)值為“0 1 auto”孝宗。
寬度 = 彈性寬度 * ( flexGrow / sum( flexGorw ) )
這里我找了個(gè)圖穷躁,可能會(huì)好理解一些


20151001110223899.jpeg

** 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狡忙。

flex-start:交叉軸的起點(diǎn)對(duì)齊。
flex-end:交叉軸的終點(diǎn)對(duì)齊 址芯。
center:交叉軸的中點(diǎn)對(duì)齊灾茁。
baseline:項(xiàng)目的第一行文字的基線對(duì)齊。
stretch(默認(rèn)值):如果項(xiàng)目未設(shè)置高度或設(shè)為auto谷炸,將占滿整個(gè)容器的高度北专。

在React Native中使用Flexbox

** 獲取當(dāng)前屏幕的寬度旬陡、高度拓颓、分辨率 **

import Dimensions from 'Dimensions';
var { width, height, scale } = Dimensions.get('window');

render() {
  return (
    <View>
      <Text>
        屏幕的寬度:{width + '\n'}
        屏幕的高度:{height + '\n'}
        屏幕的分辨率:{scale + '\n'}
      </Text>
    </View>
  );
}

** 絕對(duì)定位和相對(duì)定位 **

與css定位不同,在React Native中定位不需要再父組件中設(shè)置position屬性描孟。
通常情況下設(shè)置position和absolute匿醒,定位的效果是一樣的,但是如果父組件設(shè)置了內(nèi)邊距旗闽,position會(huì)做出相應(yīng)的定位改變适室,而absolute則不會(huì)。

** 默認(rèn)寬度 **

我們都知道塊級(jí)標(biāo)簽如果不設(shè)置寬度汽畴,通常都是獨(dú)占一行的忍些,在React Native中的組件中需要設(shè)置flexDirection:'row'廓握,才能在同一行顯示隙券,flex的元素如果不設(shè)置寬度娱仔,都會(huì)百分之百的占滿父容器众弓。

水平隔箍、垂直居中

當(dāng)alignItems、justifyContent傳center時(shí)與flexDirection的關(guān)系:


QQ20160815-0.png

想理解這個(gè)很簡(jiǎn)單捡遍,看我上班講的alignItems、justifyContent蜈项,心里想著主軸和次軸就可以理解诗祸,justifyContent是主軸方向居中,而alignItems是次軸方向居中博个,flexDirection默認(rèn)為column罪塔,所以誤區(qū)會(huì)認(rèn)為alignItems為水平居中,justifyContent為垂直居中关拒。

padding和margin

這里就不累贅啦着绊,具體和css用法是一樣的

參考鏈接:http://www.w3cplus.com/css3/a-guide-to-flexbox.html

持續(xù)更新React Native相關(guān)博客疆液,喜歡敬請(qǐng)關(guān)注。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市暴凑,隨后出現(xiàn)的幾起案子现喳,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異辽装,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)拓巧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門斯碌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人肛度,你說我怎么就攤上這事傻唾。” “怎么了承耿?”我有些...
    開封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵冠骄,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我加袋,道長(zhǎng)凛辣,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任职烧,我火速辦了婚禮扁誓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蚀之。我一直安慰自己蝗敢,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開白布足删。 她就那樣靜靜地躺著前普,像睡著了一般。 火紅的嫁衣襯著肌膚如雪壹堰。 梳的紋絲不亂的頭發(fā)上拭卿,一...
    開封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音贱纠,去河邊找鬼峻厚。 笑死,一個(gè)胖子當(dāng)著我的面吹牛谆焊,可吹牛的內(nèi)容都是我干的惠桃。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼辖试,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼辜王!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起罐孝,我...
    開封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤呐馆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后莲兢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體汹来,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡续膳,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了收班。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片坟岔。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖摔桦,靈堂內(nèi)的尸體忽然破棺而出社付,到底是詐尸還是另有隱情,我是刑警寧澤邻耕,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布瘦穆,位于F島的核電站,受9級(jí)特大地震影響赊豌,放射性物質(zhì)發(fā)生泄漏扛或。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一碘饼、第九天 我趴在偏房一處隱蔽的房頂上張望熙兔。 院中可真熱鬧,春花似錦艾恼、人聲如沸住涉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)舆声。三九已至,卻和暖如春柳爽,著一層夾襖步出監(jiān)牢的瞬間媳握,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工磷脯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蛾找,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓赵誓,卻偏偏與公主長(zhǎng)得像打毛,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子俩功,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

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

  • 前言 學(xué)習(xí)本系列內(nèi)容需要具備一定 HTML 開發(fā)基礎(chǔ)幻枉,沒有基礎(chǔ)的朋友可以先轉(zhuǎn)至 HTML快速入門(一) 學(xué)習(xí) 本人...
    珍此良辰閱讀 4,511評(píng)論 2 19
  • 一、FlexBox布局 FlexBox是什么诡蜓? 彈性盒模型(The Flexible Box Module),又叫...
    lever_xu閱讀 878評(píng)論 0 0
  • flexbox是Flexible Box的縮寫, 彈性盒子布局, 主流的瀏覽器都支持 flexbox布局是伸縮容器...
    hophia閱讀 1,097評(píng)論 1 2
  • 聽我媽小李同志說熬甫,我出生于一九八七年九月二十一日,農(nóng)歷柒月二十九万牺,雖然沒有煙霞萬里并七十二只五彩鳥繞梁飛...
    JOJO是啾啾閱讀 634評(píng)論 1 1
  • 第一次看見他時(shí)脚粟,我感覺全世界都在發(fā)光覆旱。可是當(dāng)時(shí)的我并不知道核无,有一種迷戀扣唱,會(huì)變成喜歡。有一種吸引团南,會(huì)讓人心痛噪沙。 ...
    prose閱讀 673評(píng)論 0 0