ReactNaive之CSS和Flex布局

ReactNaive之CSS和Flex布局

ReactNaive相关文章

1. React Native 中文网

2. GitHub相关代码地址

3. ReactNaive之CSS和Flex布局

4. ReactNative之基本组件

5. React Naive之ScrollView和ListView

6. React Native之导航组件NavigatorIOS和Navigator

7. ReactNative之TabBariOS和TabNavigator


注: 本文主要总结的是ReactNative的一些简单语法, 大部分内容总结自袁大神的文章

一. {}和()的使用

1. {}的使用

1-1. ReactNative中,使用表达式的时候需要用{}包住

style={styles.mainStyle}

1-2. ReactNative中,在字符串中使用变量的时候,需要用{}包住

var str = 'hello'
<Text>{str}</Text>

1-3. ReactNative中,对象,字典需要用{}包住

  • style = {},最外层表达式,用{}包住
  • {flex:1},对象,用{}包住
<View style={{flex:1}}></View>

2. ()的使用

  • 创建组件<View></View>,必须要用()包住
    • 因此只要返回组件,都需要用()
render(){
    return (
        <View style={styles.mainStyle}>

        </View>
    )
}

二. ReactNative之CSS布局

  • ReactNative支持CSS中的布局属性,因此可以使用CSS布局属性
  • CSS颜色大全,下面会用到,点击这CSS颜色代码大全

1. 视图边框

  • 什么时候使用?想设置自己周边有边框的时候
  • 注意点:一定要设置边框宽度
borderBottomWidth number 底部边框宽度
borderLeftWidth number 左边框宽度
borderRightWidth number 右边框宽度
borderTopWidth number 顶部边框宽度
borderWidth number 边框宽度
border<Bottom|Left|Right|Top>Color 各方向边框的颜色,<>表示连着一起,例如borderBottomColor
borderColor 边框颜色

2. 尺寸

2-1. 设置宽高

width number
height number

2-2. 外边距

  • 设置组件与组件之间的间距
    • 注意:第一个组件比较特殊,参照父组件,与父控件之间的间距。
    • 其他组件间距,相对于上一个组件
  • 什么时候使用?想设置自己在父控件的位置的时候使用
margin number 外边距
marginBottom number 下外边距
marginHorizontal number 左右外边距
marginLeft number 左外边距
marginRight number 右外边距
marginTop number 上外边距
marginVertical number 上下外边距

//注意marginRight和width冲突,如果设置了width,marginRight无效。

2-3. 内边距

  • 设置子控件与当前控件的位置
  • 什么时候使用?想设置自己的子控件相对自己的位置的时候使用
padding number 内边距
paddingBottom number 下内边距
paddingHorizontal number 左右内边距
paddingLeft number 做内边距
paddingRight number 右内边距
paddingTop number 上内边距
paddingVertical number 上下内边距

2-4. 相对定位和绝对定位

2-4-1. 边缘

left   number  左边缘。
right  number  右边缘。
top    number  顶部边缘。
bottom number  底部边缘。

2-4-2. 定位(position):

  • 通过 left, top, right 以及 bottom 边缘属性进行定位。
absolute:绝对定位,参照父控件位置定位
relative:相对定位,参照当前控件原始位置定位
  • 什么时候使用绝对定位,当想把一个已经设置了宽度的控件快速的放在左下角,右下角的时候,可以使用绝对定位
  • 什么时候使用相对定位,当想相对自己做出一些改变的时候,采用相对定位,比如相对自己,往下移动一点

ReactNative之Flex布局

  • 一般使用ReactNative开发App,一般都采用Flex布局,使用这套布局就非常快。

1. Flex简介

  • Flex又叫弹性布局,会把当前组件看做一个容器,他的所有子组件都是他容器中的成员,通过Flex,就能迅速的布局容器中的成员。
  • 使用场景:当想快速布局一个组件中所有子组件的时候,可以使用Flex布局

2. Flex主轴和侧轴

  • Flex中有两个主要的概念:主轴和侧轴
  • 主轴与侧轴的关系:相互垂直的。
  • 主轴:决定容器中子组件默认的布局方向:水平,垂直
  • 侧轴:决定容器中子组件与主轴垂直的布局方向
    • 比如主轴水平,那么子组件默认就是水平布局排布,侧轴就是控制子组件在垂直方向的布局

3. flexDirection属性

  • flexDirection:决定主轴的方向,水平或者垂直,这样子组件就会水平排布或者垂直排布
  • flexDirection共有四个值,在RN中默认为column。
row(默认值):主轴为水平方向,从左向右。依次排列
row-reverse:主轴为水平方向,从右向左依次排列
column:主轴为垂直方向,默认的排列方式,从上向下排列
column-reverse:主轴为垂直方向,从下向上排列

4. flexWrap属性

  • flexWrap:决定子控件在父视图内是否允许多行排列。
  • flexWrap共有两个值,默认为nowrap。
nowrap 组件只排列在一行上,可能导致溢出。
wrap   组件在一行排列不下时,就进行多行排列

5. justifyContent

  • justifyContent:决定子组件在主轴中具体布局,是靠左,还是居中等
  • justifyContent共有五个值,默认为flex-start
flex-start: //子组件向主轴起点对齐,如果主轴水平,从左开始,主轴垂直,从上开始。
flex-end:  //子组件向主轴终点对齐,如果主轴水平,从右开始,主轴垂直,从下开始。
center: //居中显示,注意:并不是让某一个子组件居中,而是整体有居中效果
space-between: //均匀分配,相邻元素间距离相同。每行第一个组件与行首对齐,每行最后一个组件与行尾对齐。
space-around: //均匀分配,相邻元素间距离相同。每行第一个组件到行首的距离和每行最后一个组件到行尾的距离将会是相邻元素之间距离的一半

6. alignItems

  • alignItems:决定子组件在测轴中具体布局
    一直都没有管过侧轴,如果侧轴垂直,决定子组件在上,还是下,或者居中
  • alignItems共有四个值,默认为stretch
flex-start 子组件向侧轴起点对齐。
flex-end 子组件向侧轴终点对齐。
center 子组件在侧轴居中。
stretch 子组件在侧轴方向被拉伸到与容器相同的高度或宽度。

7. alignSelf

  • alignSelf:自定义自己的侧轴布局,用于一个子组件设置。
  • 注意:当某个子组件不想参照默认的alignItems时,可以设置alignSelf,自定义自己的侧轴布局。
  • alignSelf共有五个值,默认为auto
auto 继承它的父容器的alignItems属性。如果没有父容器则为 "stretch"
flex-start 子组件向侧轴起点对齐。
flex-end 子组件向侧轴终点对齐。
center 子组件在侧轴居中。
stretch 子组件在侧轴方向被拉伸到与容器相同的高度或宽度。

8. flex

  • flex: 决定子控件在主轴中占据几等分。
  • flex: 任意数字,所有子控件flex相加,自己flex占总共多少,就有多少宽度.

三. ReactNative之组件属性(Props、State)

  • 在App开发中,少不了组件之间的传值,在RN中组件之间通信需要用到Props和State。

1. Props(属性)

  • 什么是Props?一般用于自定义组件,大多数组件在创建时就可以使用各种参数来进行定制,用于定制的这些参数就称为props(属性)。
  • props不能在自己的组件中修改, 只能在父组件中修改
  • 如果想在自己的组件中修改属性, 需要用state
  • name:就是Props,通过this.props.name访问
<Room name="小码哥" />

注意:props是在父组件中指定,而且一经指定,在整个组件的生命周期中都不再改变。

2. State

  • State:如果以后想修改某个属性,就修改界面,就需要用state。
  • 注意:State属性一般在constructor中声明(ES6),在setState中修改数据.
  • 定义state属性
this.state = {
    num:1,
};
  • 修改state属性
this.setState({
    num : number
})
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,026评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,655评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,726评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,204评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,558评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,731评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,944评论 2 314
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,698评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,438评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,633评论 2 247
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,125评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,444评论 3 255
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,137评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,103评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,888评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,772评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,669评论 2 271

推荐阅读更多精彩内容