reactnative Flexbox布局
2017-06-08 本文已影响10人
linzaifei
使用flexDirection、alignItems和 justifyContent
三个样式属性就已经能满足大多数布局需求。译注:这里有一份简易布局图解,可以给你一个大概的印象。
flexDirection 可以决定布局的主轴 子元素是应该沿着水平轴(row)方向排列,还是沿着竖直轴(column)方向排列呢?默认值是竖直轴(column)方向。
当flexDirection = row, column
export default class RNFlex extends Component{
render() {
return (
<View style = {styles.container}>
<View style={{width: 50, height: 50, backgroundColor: 'powderblue'}} />
<View style={{width: 50, height: 50, backgroundColor: 'skyblue'}} />
<View style={{width: 50, height: 50, backgroundColor: 'steelblue'}} />
</View>
);
}
}
const styles = StyleSheet.create({
container: {
height :300,
margin:40,
flexDirection :'column'
},
});
![](https://img.haomeiwen.com/i1757970/9f1003d8780328b4.png)
![](https://img.haomeiwen.com/i1757970/7990f4d0b8b43f61.png)
justifyContent可以决定其子元素沿着主轴的排列方式。子元素是应该靠近主轴的起始端还是末尾段分布呢?亦或应该均匀分布?对应的这些可选项有:flex-start、center、flex-end、space-around以及space-between。
<View style = {{height : 400,margin :30,justifyContent:'flex-start',flexDirection:'row',backgroundColor:'red'}}>
<View style={{width: 50, height: 50, backgroundColor: 'powderblue'}} />
<View style={{width: 50, height: 50, backgroundColor: 'skyblue'}} />
<View style={{width: 50, height: 50, backgroundColor: 'steelblue'}} />
</View>
![](https://img.haomeiwen.com/i1757970/eab2aadb21ca24d6.png)
![](https://img.haomeiwen.com/i1757970/1a73b3161f5b4617.png)
![](https://img.haomeiwen.com/i1757970/acd7561a756204c7.png)
![](https://img.haomeiwen.com/i1757970/133d483ff9720677.png)
![](https://img.haomeiwen.com/i1757970/331440f67fb24ca4.png)
![](https://img.haomeiwen.com/i1757970/4098ec0501818ff0.png)
![](https://img.haomeiwen.com/i1757970/be1a676cec5c41b7.png)
![](https://img.haomeiwen.com/i1757970/e96b163fa8e8f04a.png)
![](https://img.haomeiwen.com/i1757970/1f043c2059c75a3e.png)
]
![](https://img.haomeiwen.com/i1757970/078660fd0ec45fba.png)
alignItems可以决定其子元素沿着次轴(与主轴垂直的轴,比如若主轴方向为row,则次轴方向为column)的排列方式。子元素是应该靠近次轴的起始端还是末尾段分布呢?亦或应该均匀分布?对应的这些可选项有:flex-start、center、flex-end以及stretch。
注意:要使stretch选项生效的话,子元素在次轴方向上不能有固定的尺寸。以下面的代码为例:只有将子元素样式中的width: 50去掉之后,alignItems: 'stretch'才能生效。
![](https://img.haomeiwen.com/i1757970/a37b92d8cd27bf72.jpeg)