React Native中的Flexbox布局

简介

我们在React Native中使用flexbox规则来指定某个组件的子元素的布局。Flexbox可以在不同屏幕尺寸上提供一致的布局结构。相对于Native开发的布局更加快捷方便。

Flexbox使用flexDirection、alignItems和 justifyContent三个样式属性就已经能满足大多数布局需求

flexDirection

flexDirection可以决定zu jian组件布局的主轴,子元素会沿着主轴排列,或水平或垂直。

flexDirection的默认值是竖直轴(column)方向

column(默认)

export default class AsomeProject extends Component {

    constructor(props) {
        super(props);
    }

    render() {
        return (
            
                
                
                
            
        );
    }
}

AppRegistry.registerComponent('AsomeProject', () => AsomeProject);
React Native中的Flexbox布局_第1张图片
这里写图片描述

column-reverse

export default class AsomeProject extends Component {

    constructor(props) {
        super(props);
    }

    render() {
        return (
            
                
                
                
            
        );
    }
}

AppRegistry.registerComponent('AsomeProject', () => AsomeProject);
React Native中的Flexbox布局_第2张图片
这里写图片描述

row

export default class AsomeProject extends Component {

    constructor(props) {
        super(props);
    }

    render() {
        return (
            
                
                
                
            
        );
    }
}

AppRegistry.registerComponent('AsomeProject', () => AsomeProject);

React Native中的Flexbox布局_第3张图片
这里写图片描述

row-reverse

export default class AsomeProject extends Component {

    constructor(props) {
        super(props);
    }

    render() {
        return (
            
                
                
                
            
        );
    }
}

AppRegistry.registerComponent('AsomeProject', () => AsomeProject);

React Native中的Flexbox布局_第4张图片
这里写图片描述

justifyContent

在组件的style中指定justifyContent可以决定其子元素沿着主轴的排列方式。子元素是应该靠近主轴的起始端还是末尾段分布呢?亦或应该均匀分布?对应的这些可选项有:flex-start、center、flex-end、space-around以及space-between。

flex-start

export default class AsomeProject extends Component {

    constructor(props) {
        super(props);
    }

    render() {
        return (
            
                
                
                
            
        );
    }
}

AppRegistry.registerComponent('AsomeProject', () => AsomeProject);
React Native中的Flexbox布局_第5张图片
这里写图片描述

center

export default class AsomeProject extends Component {

    constructor(props) {
        super(props);
    }

    render() {
        return (
            
                
                
                
            
        );
    }
}

AppRegistry.registerComponent('AsomeProject', () => AsomeProject);
React Native中的Flexbox布局_第6张图片
这里写图片描述

flex-end

export default class AsomeProject extends Component {

    constructor(props) {
        super(props);
    }

    render() {
        return (
            
                
                
                
            
        );
    }
}

AppRegistry.registerComponent('AsomeProject', () => AsomeProject);
React Native中的Flexbox布局_第7张图片
这里写图片描述

space-around

export default class AsomeProject extends Component {

    constructor(props) {
        super(props);
    }

    render() {
        return (
            
                
                
                
            
        );
    }
}

AppRegistry.registerComponent('AsomeProject', () => AsomeProject);
React Native中的Flexbox布局_第8张图片
这里写图片描述

space-between

export default class AsomeProject extends Component {

    constructor(props) {
        super(props);
    }

    render() {
        return (
            
                
                
                
            
        );
    }
}

AppRegistry.registerComponent('AsomeProject', () => AsomeProject);
React Native中的Flexbox布局_第9张图片
这里写图片描述

alignItems

在组件的style中指定alignItems可以决定其子元素沿着次轴(与主轴垂直的轴,比如若主轴方向为row,则次轴方向为column)的排列方式。子元素是应该靠近次轴的起始端还是末尾段分布呢?亦或应该均匀分布?对应的这些可选项有:flex-start、center、flex-end以及stretch。

flex-start

export default class AsomeProject extends Component {

    constructor(props) {
        super(props);
    }

    render() {
        return (
            
                
                
                
            
        );
    }
}

AppRegistry.registerComponent('AsomeProject', () => AsomeProject);
React Native中的Flexbox布局_第10张图片
这里写图片描述

center

export default class AsomeProject extends Component {

    constructor(props) {
        super(props);
    }

    render() {
        return (
            
                
                
                
            
        );
    }
}

AppRegistry.registerComponent('AsomeProject', () => AsomeProject);
React Native中的Flexbox布局_第11张图片
这里写图片描述

flex-end

export default class AsomeProject extends Component {

    constructor(props) {
        super(props);
    }

    render() {
        return (
            
                
                
                
            
        );
    }
}

AppRegistry.registerComponent('AsomeProject', () => AsomeProject);
React Native中的Flexbox布局_第12张图片
这里写图片描述

stretch

注意:

要使stretch选项生效的话,子元素在次轴方向上不能有固定的尺寸。以下面的代码为例:只有将子元素样式中的width: 50去掉之后,alignItems: 'stretch'才能生效。

export default class AsomeProject extends Component {

    constructor(props) {
        super(props);
    }

    render() {
        return (
            
                
                
                
            
        );
    }
}

AppRegistry.registerComponent('AsomeProject', () => AsomeProject);
React Native中的Flexbox布局_第13张图片
这里写图片描述

你可能感兴趣的:(React Native中的Flexbox布局)