ReactNative開發(fā)-FlexBox布局

前言

看過很多關于FlexBox布局的文章管跺,但絕大部份都講的多而亂,我初學的時候也是看的一臉懵逼润文。所以打算自己總結一篇關于FlexBox布局的文章姐呐,注重實用,而不是一大堆原理和廢話典蝌。

什么是FlexBox布局曙砂?

從字面上可以理解成:能夠很容易變化以適應外界條件變化的通用矩形容器,也就是我們常聽到的彈性布局骏掀。

作用

用來解決父盒子和子盒子之間的約束關系鸠澈,如下圖所示:

image.png

這里的父盒子和子盒子是相對來說的柱告,任何一個盒子都可能成為父/子盒子,這要看此時該盒子是屬于外層空間還是里層空間

Flex容器的屬性

flexDirection笑陈、justifyContent际度、alignItemsflexWrap

掌握這4個屬性涵妥,基本上就能實現布局千變萬化乖菱,接下來講解每一個的用法

1.flexDirection

作用:決定盒子的主軸方向。意思就是你想布局是往哪個方向走蓬网?是橫還是豎窒所?

屬性值:rowrow-reverse帆锋、column吵取、column-reverse

image.png

如圖解所示:

row:主軸是水平方向,從左往右排列

row-reverse:主軸是水平方向窟坐,從右往左排列

column:主軸是垂直方向海渊,從上往下排列

column-reverse:主軸是垂直方向,從下往上排列

其中:column是作為默認的主軸屬性哲鸳。意思就是,如果不特意設置flexDirection,那么盔憨,該盒子的主軸默認方向就是flex-direction:column

2.justifyContent

作用:決定盒子在主軸(水平)的對齊方向

屬性值:flex-start徙菠、flex-endcenter郁岩、space-between婿奔、space-around

image.png

如圖解所示:

flex-start:左對齊

flex-end:右對齊

center:居中

space-between:兩端對齊,盒子之間的間隔都相等

space-around:每個盒子兩側的間隔相等问慎。盒子之間的間隔比盒子與邊框的間隔大一倍

其中:flex-start是作為默認的主軸對齊方向萍摊。意思就是,如果不特意設置flex-start,那么如叼,盒子的主軸對齊方向就是flex-start

3.alignItems

作用:決定盒子在交叉軸(垂直)的對齊方向

屬性值:flex-start冰木、flex-endcenter笼恰、baseline踊沸、stretch

image.png

如圖解所示:

flex-start:交叉軸的起點對齊

flex-end:交叉軸的終點對齊

center:交叉軸的中點對齊

stretch:如果項目未設置高度或設為auto,將占滿整個容器的高度

baseline:項目的第一行文字的基線對齊

4.flex-wrap

作用:決定盒子是否排列在一條軸線上社证。說白了逼龟,就是需不需要換行顯示。

屬性值:nowrap追葡、 wrap腺律、wrap-reverse

image.png

如圖解所示:

nowrap:不換行奕短,如果父盒子有長度限制,那么多出的部分將會看不見匀钧。

wrap:換行翎碑,第一行在上面。如果父盒子有長度限制榴捡,那么剩余空間不夠的情況下將會換行顯示杈女。

wrap-reverse:換行,第一行在下面吊圾。如果父盒子有長度限制达椰,那么剩余空間不夠的情況下將會換行顯示。

總結

4個屬性项乒,flexDirection控制主軸方向啰劲,justifyContentalignItems負責控制水平和垂直對齊方向,flexWrap就控制是否換行檀何。就這么簡單蝇裤!

在我個人實際開發(fā)中,可以利用好ReactNative的開發(fā)者模式中的Hot Reloading频鉴,開啟這個可以實時看到UI布局的變化栓辜。再配合borderWidth這一屬性,為每個UI元素添加邊框垛孔,這樣就能很靈活的調動UI布局藕甩。下面是我自己寫的布局例子:

import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View, Dimensions
} from 'react-native';
const screenWidth = Dimensions.get('window').width;  //屏幕的寬度
const screenHeight = Dimensions.get('window').height;  //屏幕的高度

export default class Demo extends Component {
render() {
 return (
     <View style={styles.firstContainer}>
         <View style={styles.secondContainer}>
             <View style={styles.textContainer}>
                 <Text style={styles.welcome}>
                     Welcome to React Native!
                 </Text>
             </View>
             <View style={styles.textContainer}>
                 <Text style={styles.instructions}>
                     To get started, edit index.android.js
                 </Text>
             </View>
             <View style={styles.textContainer}>
                 <Text style={styles.instructions}>
                     Double tap R on your keyboard to reload,{'\n'}
                     Shake or press menu button for dev menu
                 </Text>
             </View>
         </View>
     </View>
 );
}
}

const styles = StyleSheet.create({
firstContainer: {
   flexDirection: 'column',height:screenHeight,
   width:screenWidth, justifyContent: 'center',
   alignItems: 'center'
},
secondContainer: {
   flexDirection:'column',height:0.3*screenHeight,
   width:0.8*screenWidth,borderWidth:1,
   justifyContent: 'center',alignItems: 'center'
},
textContainer: {
   flexDirection:'row',borderWidth:1,
   justifyContent: 'center',alignItems: 'center'
},
welcome:{
   fontSize: 20,margin: 10
}
 instructions:{
   marginBottom: 5
}
});

AppRegistry.registerComponent('Demo', () => Demo);
1548828942423.gif
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市周荐,隨后出現的幾起案子狭莱,更是在濱河造成了極大的恐慌,老刑警劉巖概作,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腋妙,死亡現場離奇詭異,居然都是意外死亡讯榕,警方通過查閱死者的電腦和手機骤素,發(fā)現死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瘩扼,“玉大人谆甜,你說我怎么就攤上這事〖拢” “怎么了规辱?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長栽燕。 經常有香客問我罕袋,道長改淑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任浴讯,我火速辦了婚禮朵夏,結果婚禮上,老公的妹妹穿的比我還像新娘榆纽。我一直安慰自己仰猖,他們只是感情好,可當我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布奈籽。 她就那樣靜靜地躺著饥侵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪衣屏。 梳的紋絲不亂的頭發(fā)上躏升,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天,我揣著相機與錄音狼忱,去河邊找鬼膨疏。 笑死,一個胖子當著我的面吹牛钻弄,可吹牛的內容都是我干的佃却。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼窘俺,長吁一口氣:“原來是場噩夢啊……” “哼双霍!你這毒婦竟也來了?” 一聲冷哼從身側響起批销,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎染坯,沒想到半個月后均芽,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡单鹿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年掀宋,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片仲锄。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡劲妙,死狀恐怖,靈堂內的尸體忽然破棺而出儒喊,到底是詐尸還是另有隱情镣奋,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布怀愧,位于F島的核電站侨颈,受9級特大地震影響余赢,放射性物質發(fā)生泄漏。R本人自食惡果不足惜哈垢,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一妻柒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧耘分,春花似錦举塔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至拜秧,卻和暖如春痹屹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背枉氮。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工志衍, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人聊替。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓楼肪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親惹悄。 傳聞我的和親對象是個殘疾皇子春叫,可洞房花燭夜當晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內容