基础篇_使用Flexbox布局
我们在 React Native 中使用 flexbox 规则来指定某个组件的子元素的布局。Flexbox 可以在不同屏幕尺寸上提供一致的布局结构。
- 一般来说,使用
flexDirection
,alignItems
和justifyContent
三个样式属性就已经能满足大多数布局需求。
direction [d?? rek ?n] 方向;指导;趋势译注:这里有一份简易布局图解,可以给你一个大概的印象。
align [?' la?n] 排列;排成一行
justify ['d?? st?' fai] 整理版面
content [k?n' tent] 内容,容量
Flex Direction
文章图片
column ['k?l?m] 纵队,列
row [r??] 行,排
reverse [r?'v??s] 相反
React Native 中的 Flexbox 的工作原理和 web上的CSS基本一致,当然也存在少许差异。首先是默认值不同:flexDirection 的默认值是 column 而不是row,而 flex 也只能指定一个数字值。
在组件的 style 中指定 flexDirection 可以决定布局的主轴。子元素是应该沿着水平轴(row)方向排列,还是沿着竖直轴(column)方向排列呢?默认值是竖直轴(column)方向。代码如下
import React, { Component } from 'react';
import {
AppRegistry,
View
} from 'react-native';
class MyApp extends Component {render() {
return (
// 尝试把 `flexDirection` 改为`column`
);
}
}
AppRegistry.registerComponent('MyApp', () => MyApp);
效果如下:
文章图片
render() {
return (
// 尝试把 `flexDirection` 改为`column`
);
}
效果如下:
文章图片
Justify Content 在组件的 style 中指定 justifyContent 可以决定其子元素沿着主轴的排列方式。
子元素是应该靠近主轴的起始端还是末尾段分布呢?亦或应该均匀分布?
对应的这些可选项有:flex-start、center、flex-end、space-around以及space-between。
文章图片
代码如下:
import React, { Component } from 'react';
import {
AppRegistry,
View
} from 'react-native';
class MyApp extends Component {render() {
return (
// 尝试把 `flexDirection` 改为`column`
);
}
}
AppRegistry.registerComponent('MyApp', () => MyApp);
效果如下:
文章图片
代码如下:
render() {
return (
);
}
效果如下:
文章图片
Align Items 在组件的style中指定 alignItems,可以决定其子元素沿着 次轴(与主轴垂直的轴,比如若主轴方向为row,则次轴方向为column)的排列方式。
子元素是应该靠近次轴的起始端还是末尾段分布呢?亦或应该均匀分布?
对应的这些可选项有:flex-start、center、flex-end 以及 stretch。
文章图片
stretch [stret?] 伸展,张开;以下面的代码为例:
注意:要使 stretch 选项生效的话,子元素在次轴方向上不能有固定的尺寸。
只有将子元素样式中的width: 50去掉之后,alignItems: 'stretch'才能生效。
代码如下:
import React, { Component } from 'react';
import {
AppRegistry,
View
} from 'react-native';
class MyApp extends Component {render() {
return (
);
}
}
AppRegistry.registerComponent('MyApp', () => MyApp);
效果如下:
文章图片
代码如下:
class MyApp extends Component {render() {
return (
// 尝试把 `flexDirection` 改为`column`
);
}
}
效果如下:
文章图片
【基础篇_使用Flexbox布局】以下是另外的布局方式
文章图片
文章图片
推荐阅读
- 2018年11月19日|2018年11月19日 星期一 亲子日记第144篇
- 由浅入深理解AOP
- 【译】20个更有效地使用谷歌搜索的技巧
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- 拍照一年啦,如果你想了解我,那就请先看看这篇文章
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- 亲子日记第186篇,2018、7、26、星期四、晴
- 漫画初学者如何学习漫画背景的透视画法(这篇教程请收藏好了!)