[深入剖析React Native]React Native Flexbox属性讲解
React Native通过一个基于Flexbox的布局引擎,在所有移动平台上实现了一致的跨平台样式和布局方案。 主要属性
属性讲解flex当一个元素定义了flex属性时,表示该元素是可伸缩的(flex的属性值大于0的时候才可伸缩),可以把它类比成android中的weight属性。 class FlexboxReact extends Component {
render() {
return (
<View style={styles.container}>
<View style={styles.flex_style_1}><Text>占1/6</Text></View>
<View style={styles.flex_style_2}><Text>占1/3</Text></View>
<View style={styles.flex_style_3}><Text>占1/2</Text></View>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,},flex_style_1: {
flex: 1,backgroundColor: 'red'
},flex_style_2: {
flex: 2,backgroundColor: 'white'
},flex_style_3: {
flex: 3,backgroundColor: 'blue'
},});
效果图: flexDirectionflexDirection在React Native中只有两个属性值,row(横向伸缩)和column(纵向伸缩),默认为column: class FlexboxReact extends Component {
render() {
return (
<View style={styles.container}>
<View style={styles.flex_style_1}><Text>占1/6</Text></View>
<View style={styles.flex_style_2}><Text>占1/3</Text></View>
<View style={styles.flex_style_3}><Text>占1/2</Text></View>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,flexDirection: 'row',});
上面代码仅仅修改了container样式: container: { flex: 1,},
效果图: alignSelf这个用法跟alignItems的很像,只是它用于单个组件alignSelf的对齐方式,即该属性用来设置单独组件的竖直对齐方式,主要有四种:flex-start、flex-end、center、auto、stretch:
class FlexboxReact extends Component {
render() {
return (
<View style={styles.container}>
<View style={[styles.view, styles.alignSelf_flexstart]}><Text>flex-start</Text></View>
<View style={[styles.view, styles.alignSelf_flexend]}><Text>flex-end</Text></View>
<View style={[styles.view, styles.alignSelf_center]}><Text>center</Text></View>
<View style={[styles.view, styles.alignSelf_auto]}><Text>auto</Text></View>
<View style={[styles.view, styles.alignSelf_stretch]}><Text>stretch</Text></View>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,view: {
flex: 1,backgroundColor: 'red',borderWidth: 1,borderColor: 'blue',alignSelf_flexstart: {
alignSelf: 'flex-start',alignSelf_flexend: {
alignSelf: 'flex-end',alignSelf_center: {
alignSelf: 'center',alignSelf_auto: {
alignSelf: 'auto',alignSelf_stretch: {
alignSelf: 'stretch',});
alignItems用于定义子组件在垂直方向上的对齐方式。有四个属性可设置:flex-start,flex-end,center,stretch。 class FlexboxReact extends Component {
render() {
return (
<View style={styles.container}>
<View style={[styles.view, styles.alignItems_flexstart]}>
<Text style={styles.subView}>flex-start</Text>
</View>
<View style={[styles.view, styles.alignItems_flexend]}>
<Text style={styles.subView}>flex-end</Text>
</View>
<View style={[styles.view, styles.alignItems_center]}>
<Text style={styles.subView}>center</Text>
</View>
<View style={[styles.view, styles.alignItems_stretch]}>
<Text style={styles.subView}>stretch</Text>
</View>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,subView: {
width: 100,height: 100,alignItems_flexstart: {
alignItems: 'flex-start',alignItems_flexend: {
alignItems: 'flex-end',alignItems_center: {
alignItems: 'center',alignItems_stretch: {
alignItems: 'stretch',});
justifyContentjustifyContent和alignItems是相对的。它有五个属性可以设置,分别是flex-start,flex-end,center,space-between,space-around。
class FlexboxReact extends Component {
render() {
return (
<View style={styles.container}>
<View style={[styles.view, styles.justifyContent_flexstart]}>
<Text style={styles.subView}>Item 1</Text>
<Text style={styles.subView}>Item 2</Text>
<Text style={styles.subView}>Item 3</Text>
</View>
<View style={[styles.view, styles.justifyContent_flexend]}>
<Text style={styles.subView}>Item 1</Text>
<Text style={styles.subView}>Item 2</Text>
<Text style={styles.subView}>Item 3</Text>
</View>
<View style={[styles.view, styles.justifyContent_center]}>
<Text style={styles.subView}>Item 1</Text>
<Text style={styles.subView}>Item 2</Text>
<Text style={styles.subView}>Item 3</Text>
</View>
<View style={[styles.view, styles.justifyContent_between]}>
<Text style={styles.subView}>Item 1</Text>
<Text style={styles.subView}>Item 2</Text>
<Text style={styles.subView}>Item 3</Text>
</View>
<View style={[styles.view, styles.justifyContent_around]}>
<Text style={styles.subView}>Item 1</Text>
<Text style={styles.subView}>Item 2</Text>
<Text style={styles.subView}>Item 3</Text>
</View>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,flexDirection: 'row',borderColor: 'black',subView: {
width: 50,height: 50,justifyContent_flexstart: {
justifyContent: 'flex-start',justifyContent_flexend: {
justifyContent: 'flex-end',justifyContent_center: {
justifyContent: 'center',justifyContent_between: {
justifyContent: 'space-between',justifyContent_around: {
justifyContent: 'space-around',});
flexWrapflexWrap用于设置是否可换行,有两个属性可设置nowrap和wrap。
class FlexboxReact extends Component { render() { return ( <View style={styles.container}> <View style={[styles.view,styles.flexWrap_nowrap]}> <Text style={styles.subView}>Item 1</Text> <Text style={styles.subView}>Item 2</Text> <Text style={styles.subView}>Item 3</Text> <Text style={styles.subView}>Item 4</Text> <Text style={styles.subView}>Item 5</Text> <Text style={styles.subView}>Item 6</Text> </View> <View style={[styles.view,styles.flexWrap_wrap]}> <Text style={styles.subView}>Item 1</Text> <Text style={styles.subView}>Item 2</Text> <Text style={styles.subView}>Item 3</Text> <Text style={styles.subView}>Item 4</Text> <Text style={styles.subView}>Item 5</Text> <Text style={styles.subView}>Item 6</Text> </View> </View> ); } } const styles = StyleSheet.create({ container: { flex: 1,view: { flex: 1,flexDirection: 'row',borderWidth: 1,borderColor: 'black',subView: { width: 80,height: 80,backgroundColor: 'red',borderColor: 'blue',flexWrap_nowrap: { flexWrap: 'nowrap',flexWrap_wrap: { flexWrap: 'wrap',});
转载请标注地址:Geek马走日 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |