前端开发那些事儿

02基础语法--004--Flexbox 布局

2020-08-26  本文已影响0人  修_远

[toc]

Flexbox 布局

CSS 盒模型主要有:margin、border、padding、content 四个属性构成

image.png

Flexbox 布局属性分类

flexDirection 属性

flexDirection 属性表示布局中子组件的排列方向,默认为 column,取值包括

column

image.png

row

image.png

row-reverse

image.png

column-reverse

image.png
import React, { Component } from 'react';
import {
    View,
    Text,
    StyleSheet
} from 'react-native';


export default FlexDirection = () => {
    return (
        <View style={styles.container}>
            <Text style={styles.view_one}>视图1</Text>
            <Text style={styles.view_two}>视图2</Text>
        </View>
    );
}

const styles = StyleSheet.create({
    container: {
        flex: 1,
        justifyContent: 'center',
        alignItems: 'center',
        backgroundColor: '#F5FCFF',
        flexDirection: 'column-reverse'
    },
    view_one: {
        height: 200,
        width: 200,
        textAlign: 'center',
        fontSize: 28,
        backgroundColor: 'red',
    },
    view_two: {
        height: 200,
        width: 200,
        textAlign: 'center',
        fontSize: 28,
        backgroundColor: 'green',
    }
});

flexWrap 属性

flexWrap 属性主要用于控制子组件单行还是多行显示,默认是wrap,取值包括:

wrap

image.png

nowrap

image.png

wrap-reverse

image.png
import React from 'react';
import {
    View,
    Text,
    StyleSheet
} from 'react-native';


export default FlexWrap = () => {
    return (
        <View style={styles.container}>
            <Text style={styles.view}>视图1</Text>
            <Text style={styles.view}>视图2</Text>
            <Text style={styles.view}>视图3</Text>
        </View>
    );
}

const styles = StyleSheet.create({
    container: {
        flex: 1,
        paddingTop: 200,
        justifyContent: 'center',
        alignItems: 'center',
        backgroundColor: '#F5FCFF',
        flexDirection: 'row',
        flexWrap: 'wrap',
    },
    view: {
        height: 150,
        width: 150,
        alignItems: 'center',
        alignSelf: 'center',
        fontSize: 28,
        backgroundColor: 'red',
    },
});

justifyContent 属性

justifyContent 属性主要表明容器中子组件横向排列的位置,默认flex-start,取值包括:

alignItems 也可以用于控制容器中组组件的排列方向,默认情况下:

space-between

image.png
image.png

space-around

image.png
image.png
import React from 'react';
import {
    View,
    Text,
    StyleSheet
} from 'react-native';


export default JustifyContent = () => {
    return (
        <View style={styles.container}>
            <Text style={styles.view}>视图1</Text>
            <Text style={styles.view}>视图2</Text>
            <Text style={styles.view}>视图3</Text>
        </View>
    );
}

const styles = StyleSheet.create({
    container: {
        flex: 1,
        justifyContent: 'space-around',
        backgroundColor: '#F5FCFF',
        alignItems: 'center',
        flexDirection: 'row'
    },
    view: {
        height: 100,
        width: 100,
        textAlign: 'center',
        fontSize: 28,
        backgroundColor: 'red',
    },
});

alignSelf 属性

alignSelf 属性表明组件在容器内部的排列情况,与alignItems属性不同,alignSelf属性是在子组件内部定义的,取值包括:

image.png
import React from 'react';
import {
    View,
    Text,
    StyleSheet
} from 'react-native';


export default AlignSelf = () => {
    return (
        <View style={styles.container}>
            <Text style={styles.view1}>视图1</Text>
            <Text style={styles.view2}>视图2</Text>
            <Text style={styles.view3}>视图3</Text>
        </View>
    );
}

const styles = StyleSheet.create({
    container: {
        flex: 1,
        paddingTop: 200,
        backgroundColor: '#F5FCFF',
    },
    view1: {
        height: 150,
        width: 150,
        fontSize: 28,
        backgroundColor: 'red',
        alignSelf: 'flex-end',
    },
    view2: {
        height: 150,
        width: 150,
        fontSize: 28,
        backgroundColor: 'red',
        alignSelf: 'center',
    },
    view3: {
        height: 150,
        width: 150,
        fontSize: 28,
        backgroundColor: 'red',
        alignSelf: 'stretch',
    },
});

flex 属性

flex 属性表明子控件占父空间的比例,即组件可以动态计算和配置自己所占用的空间大小,取值是数值,默认值为0,即不占用任何父类容器空间。

flex属性是实现自适应设备和屏幕尺寸的核心。

image.png
import React from 'react';
import {
    View,
    Text,
    StyleSheet
} from 'react-native';


export default Flex = () => {
    return (
        <View style={styles.container}>
            <Text style={styles.view1}>视图1</Text>
            <Text style={styles.view2}>视图2</Text>
        </View>
    );
}

const styles = StyleSheet.create({
    container: {
        flex: 1,
        paddingTop: 200,
        alignItems: 'center',
        backgroundColor: '#F5FCFF',
        flexDirection: 'row',
    },
    view1: {
        height: 150,
        width: 150,
        fontSize: 28,
        backgroundColor: 'red',
        flex: 1,
    },
    view2: {
        height: 150,
        width: 150,
        fontSize: 28,
        backgroundColor: 'blue',
        flex: 2,
    },
});
上一篇下一篇

猜你喜欢

热点阅读