React Native布局之FlexBox
概述FlexBox(弹性框布局):英文全称the flexible box Module,FlexBox旨在提供了在不同尺寸设备上都能保持一致的布局方式。 在学习FlexBox之前首先要清楚一个概念“宽和高”。一个组件的高度和宽度决定了它在屏幕上的尺寸,显示的效果。 FlexBox属性为了更好的理解与应用FlexBox,我们先看一下FlexBox所具有的属性。 主轴和侧轴(横轴和竖轴)在学习属性之前,让我们先了解一个概念:主轴和侧轴。 如图:主轴即水平方向的轴线,可以理解成横轴,侧轴垂直于主轴,可以理解为竖轴。 flexDirection
justifyContent
alignItems
flexWrap
代码示例<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,margin:5}}>
<Text style={ {fontSize:16}}>2</Text>
</View>
<View style={ {width:40,margin:5}}>
<Text style={ {fontSize:16}}>3</Text>
</View>
<View style={ {width:40,margin:5}}>
<Text style={ {fontSize:16}}>4</Text>
</View>
</View>
宽和高在React Native中尺寸是没有单位的,它代表了设备独立像素。有点类似于Android的设备像素。 <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的手机屏幕上显示不会发生改变。 RN的FlexBox和css的FlexBox的异同虽然React Native中的FlexBox 和Web CSSS上FlexBox工作方式是一样的。但是在某些方面还是有细微区别的:
React NativeReact Native布局属性以下属性是React Native所支持的Flex属性。 父视图属性(容器属性):
justifyContent该属性定义了浏览器如何分配顺着父容器主轴的弹性(flex)元素之间及其周围的空间,默认为flex-start。
代码示例: <View style={ {justifyContent:'center',flexDirection:'row',backgroundColor:"darkgray",marginTop:20}}>
···
</View>
alignItems属性以与justify-content相同的方式在侧轴方向上将当前行上的弹性元素对齐,默认为stretch。 <View style={ {justifyContent:'center',marginTop:20}}>
···
</View>
子视图属性alignSelf该属性以属性定义了flex容器内被选中项目的对齐方式。注意:alignSelf 属性可重写灵活容器的 alignItems 属性。
代码示例: <View style={ {alignSelf:'baseline',width:60,height: 20,margin:5}}>
<Text style={ {fontSize:16}}>1</Text>
</View>
flex该属性定义了一个可伸缩元素的能力,默认为0。类似于比重这么一个概念(因其位于父视图下面,所以比重相当于所占的百分比)。 代码示例: <View style={ {flexDirection:'row',marginTop:20}}>
<View style={ {flex:1,margin:5}}>
<Text style={ {fontSize:16}}>flex:1</Text>
</View>
<View style={ {flex:2,margin:5}}>
<Text style={ {fontSize:16}}>flex:2</Text>
</View>
<View style={ {flex:3,margin:5}}>
<Text style={ {fontSize:16}}>flex:3</Text>
</View>
</View>
其他属性视图边框
外边框
内边框
边缘
元素定位
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |