We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
本文主要介绍一下reactnative布局相关知识,列举一下web端布局和rn布局的一些区别。在React Native中布局采用的是FleBox(弹性框)进行布局。
FlexBox提供了在不同尺寸设备上都能保持一致的布局方式。FlexBox是CSS3弹性框布局规范,并不是所有的浏览器都支持Flexbox。但大家在做React Native开发时大可不必担心FlexBox的兼容性问题,因为既然React Native选择用FlexBox布局,那么React Native对FlexBox的支持自然会做的很好。
在学习FlexBox之前首先要清楚一个概念“宽和高”。一个组件的高度和宽度决定了它在屏幕上的尺寸,也就是大小。 在web端,我们讲究的是流式布局,有块级元素和行内元素的概念,但是在rn中没有这个概念,一个元素不指定宽高,那么就展示不出来。
在React Native中尺寸是没有单位的,它代表了设备独立像素。
<View style={ {width:100,height:100,margin:40,backgroundColor:'gray'}}> <Text style={ {fontSize:16,margin:20}}>尺寸</Text> </View>
上述代码,运行在Android上时,View的长和宽被解释成:100dp 100dp单位是dp,字体被解释成16sp 单位是sp,运行在iOS上时尺寸单位被解释称了pt,这些单位确保了布局在任何不同dpi的手机屏幕上显示不会发生改变;
值得一提的是,React Native中的FlexBox 和Web CSSS上FlexBox工作方式是一样的。但有些地方还是有些出入的,如:
flexDirection:'column'
flex-direction:'row'
alignItems:'stretch'
align-items:'flex-start'
flex: 2 2 10%;
以上是React Native中的FlexBox 和Web CSSS上FlexBox的不同之处,记住这几点,你可以像在Web CSSS上使用FlexBox一样,在React Native中使用FlexBox。
首先我们介绍父容器属性;
flexDirection
flexDirection enum('row', 'column','row-reverse','column-reverse')` flexDirection`属性定义了父视图中的子元素沿横轴或侧轴方片的排列方式。 row: 从左向右依次排列 row-reverse: 从右向左依次排列 column(default): 默认的排列方式,从上向下排列 column-reverse: 从下向上排列
Usage:
<View style={ {flexDirection:'row-reverse',backgroundColor:"darkgray",marginTop:20}}> <View style={ {width:40,height:40,backgroundColor:"darkcyan",margin:5}}> <Text style={ {fontSize:16}}>1</Text> </View> <View style={ {width:40,height:40,backgroundColor:"darkcyan",margin:5}}> <Text style={ {fontSize:16}}>2</Text> </View> <View style={ {width:40,height:40,backgroundColor:"darkcyan",margin:5}}> <Text style={ {fontSize:16}}>3</Text> </View> <View style={ {width:40,height:40,backgroundColor:"darkcyan",margin:5}}> <Text style={ {fontSize:16}}>4</Text> </View> </View>
flexWrap
flexWrap enum('wrap', 'nowrap')` flexWrap`属性定义了子元素在父视图内是否允许多行排列,默认为nowrap。 nowrap flex的元素只排列在一行上,可能导致溢出。 wrap flex的元素在一行排列不下时,就进行多行排列。
<View style={ {flexWrap:'wrap',flexDirection:'row',backgroundColor:"darkgray",marginTop:20}}> ··· </View>
justifyContent
justifyContent enum('flex-start', 'flex-end', 'center', 'space-between', 'space-around') justifyContent`属性定义了浏览器如何分配顺着父容器主轴的弹性(flex)元素之间及其周围的空间,默认为flex-start。 flex-start(default) 从行首开始排列。每行第一个弹性元素与行首对齐,同时所有后续的弹性元素与前一个对齐。 flex-end 从行尾开始排列。每行最后一个弹性元素与行尾对齐,其他元素将与后一个对齐。 center 伸缩元素向每行中点排列。每行第一个元素到行首的距离将与每行最后一个元素到行尾的距离相同。 space-between 在每行上均匀分配弹性元素。相邻元素间距离相同。每行第一个元素与行首对齐,每行最后一个元素与行尾对齐。 space-around 在每行上均匀分配弹性元素。相邻元素间距离相同。每行第一个元素到行首的距离和每行最后一个元素到行尾的距离将会是相邻元素之间距离的一半。
<View style={ {justifyContent:'center',flexDirection:'row',backgroundColor:"darkgray",marginTop:20}}> ··· </View>
alignItems
alignItems enum('flex-start', 'flex-end', 'center', 'stretch')` alignItems`属性以与justify-content相同的方式在侧轴方向上将当前行上的弹性元素对齐,默认为stretch。 flex-start 元素向侧轴起点对齐。 flex-end 元素向侧轴终点对齐。 center 元素在侧轴居中。如果元素在侧轴上的高度高于其容器,那么在两个方向上溢出距离相同。 stretch 弹性元素被在侧轴方向被拉伸到与容器相同的高度或宽度。
###子视图属性
alignSelf
alignSelf enum('auto', 'flex-start', 'flex-end', 'center', 'stretch')` alignSelf`属性以属性定义了flex容器内被选中项目的对齐方式。注意:alignSelf 属性可重写灵活容器的 alignItems 属性。 auto(default) 元素继承了它的父容器的 align-items 属性。如果没有父容器则为 "stretch"。 stretch 元素被拉伸以适应容器。 center 元素位于容器的中心。 flex-start 元素位于容器的开头。 flex-end 元素位于容器的结尾。
<View style={ {alignSelf:'baseline',width:60,height: 20,backgroundColor:"darkcyan",margin:5}}> <Text style={ {fontSize:16}}>1</Text> </View> ...
flex
flex number`
flex 属性定义了一个可伸缩元素的能力,默认为0。
<View style={ {flexDirection:'row',height:40, backgroundColor:"darkgray",marginTop:20}}> <View style={ {flex:1,backgroundColor:"darkcyan",margin:5}}> <Text style={ {fontSize:16}}>flex:1</Text> </View> <View style={ {flex:2,backgroundColor:"darkcyan",margin:5}}> <Text style={ {fontSize:16}}>flex:2</Text> </View> <View style={ {flex:3,backgroundColor:"darkcyan",margin:5}}> <Text style={ {fontSize:16}}>flex:3</Text> </View> </View>
以下属性是React Native所支持的除Flex以外的其它布局属性。
position enum('absolute', 'relative')属性设置元素的定位方式,为将要定位的元素定义定位规则。
##备注
本文部分内容,转载github上面react-native布局详情
The text was updated successfully, but these errors were encountered:
No branches or pull requests
前言
本文主要介绍一下reactnative布局相关知识,列举一下web端布局和rn布局的一些区别。在React Native中布局采用的是FleBox(弹性框)进行布局。
FlexBox提供了在不同尺寸设备上都能保持一致的布局方式。FlexBox是CSS3弹性框布局规范,并不是所有的浏览器都支持Flexbox。但大家在做React Native开发时大可不必担心FlexBox的兼容性问题,因为既然React Native选择用FlexBox布局,那么React Native对FlexBox的支持自然会做的很好。
宽和高
在学习FlexBox之前首先要清楚一个概念“宽和高”。一个组件的高度和宽度决定了它在屏幕上的尺寸,也就是大小。
在web端,我们讲究的是流式布局,有块级元素和行内元素的概念,但是在rn中没有这个概念,一个元素不指定宽高,那么就展示不出来。
像素无关
在React Native中尺寸是没有单位的,它代表了设备独立像素。
上述代码,运行在Android上时,View的长和宽被解释成:100dp 100dp单位是dp,字体被解释成16sp 单位是sp,运行在iOS上时尺寸单位被解释称了pt,这些单位确保了布局在任何不同dpi的手机屏幕上显示不会发生改变;
和而不同
值得一提的是,React Native中的FlexBox 和Web CSSS上FlexBox工作方式是一样的。但有些地方还是有些出入的,如:
React Native中的FlexBox 和Web CSSS上FlexBox的不同之处
flexDirection:'column'
,在Web CSS中默认为flex-direction:'row'
alignItems:'stretch'
,在Web CSS中默认align-items:'flex-start'
flex: 2 2 10%;
,但在 React Native中flex只接受一个参数以上是React Native中的FlexBox 和Web CSSS上FlexBox的不同之处,记住这几点,你可以像在Web CSSS上使用FlexBox一样,在React Native中使用FlexBox。
flex布局方式介绍
首先我们介绍父容器属性;
父视图属性有如下(容器属性):
flexDirection
Usage:
flexWrap
Usage:
justifyContent
Usage:
alignItems
Usage:
###子视图属性
alignSelf
Usage:
flex
Usage:
其他布局 in React Native
以下属性是React Native所支持的除Flex以外的其它布局属性。
视图边框
尺寸
外边距
内边距
边缘
定位(position)
position enum('absolute', 'relative')属性设置元素的定位方式,为将要定位的元素定义定位规则。
##备注
本文部分内容,转载github上面react-native布局详情
The text was updated successfully, but these errors were encountered: