视频地址:http://www.jikexueyuan.com/course/1489.html
背景:React Native
使你能够使用基于 JavaScript
和 React
构建世界一流的应用程序。 React Native
把重点放在所有开发人员关心的平台的开发效率上——开发者只需学习一种语言就能轻易为任何平台高效地编写代码。 通过该课程,学员可以理解 Flexbox
, 并基本掌握 React Native
的样式和布局开发。
1 Flexbox 布局详解
课程说明: Flexbox 布局的基本原理和方法
说明:Flexbox
是css3
里边引入的布局模型-弹性盒子模型,旨在通过弹性的方式来对齐和分布容器中内容的空间,使其能够适应不同屏幕的高度。React Native
中Flexbox
是这个规范的一个子集。
1.1 Flexbox解决了什么问题?
- 浮动布局
- 不同宽度屏幕的适配
- 宽度自动分配
- 水平垂直居中
1.2 Flexbox 属性
12.1 容器属性
容器属性 | 值 | 说明 |
---|---|---|
flexDirection | enum(row , colum ) |
主轴的方向,默认为row |
flexWrap | enum(wrap , nowrap ) |
默认为nowrap ,所有item都在一行或一列;wrap 则使一行或一列容不下时进行折行处理 |
alignItems | enum(flext-start 、flex-end 、center 、stretch ) |
在cross axis 方向上对剩余空间的处理方式 |
justifyContent | enum(flex-start 、flex-end 、center 、space-between 、space-around ) |
在main axis 方向上对剩余空间的处理方式 |
1.2.2 容器属性
元素属性 | 类型 | 说明 |
---|---|---|
flex | number | item 在 main axis 方向上占用空间大小 |
alignSelf | enum(flext-start 、flex-end 、center 、stretch ) |
针对单一的item 在cross axis 方向上的alignItems |
(2)alignSelf
2 样式布局基础
课程背景:React Native
的样式布局基础,包括如何添加和使用样式,以及介绍作为 Css 子集的基本盒模型布局方式
2.1 声明和使用样式
2.1.1 声明
通过 StyleSheet
声明样式
1 | var styles = StyleSheet.create({ |
2.1.2 使用
通过 Style
属性来使用样式
1 | // 引用单个 style |
2.2 布局单位
- 设置高度或者宽度时不用带单位,默认使用
pt
为单位 - 不能使用百分比来设置宽度或高度
- 可通过
Dimensions
模块来获取窗口宽高 - 可通过
PixelRatio
模块来获取像素密度
使用 Dimensions模块来获取宽高
1 | var Dimensions = require('Dimensions'); |
通过 PixelRatio 对象来获取像素密度
1 | var pixelRation = PixelRatio.get(); |
2.3 盒子模型
2.4 定位模式
说明:支持absolute
和relative
定位
注意:和 css 的标准不同的是,父元素容器不用设置 position : absolute|relative
absolute定位
1 | <View style={{ |
relative定位
1 | <View style={{ |
2.5 css 属性
- transform
- border style
- font style
- shadow
- background
- overflow
- opacity
3 图像 Image 组件介绍
说明:Image
组件通过source
来指定资源,资源可以是本地的资源,也可以是网络上的资源
3.1 引入图片
网络图片
说明:通过设置 source
的uri
注意:网络引入的必须设置其宽高
1 | <Image |
本地图片
(2)通过 require('image!name')
的方式引入
1 | <Image style={styles.icon} |
3.2 resizeMode
说明:通过resizeMode
改变图片显示效果,类似css
的背景模式
属性 | 类型 | 说明 |
---|---|---|
resizeMode | enum(cover , contain , stretch ) |
改变图片显示效果,类似css 的背景模式 |
3.3 Image 嵌套其它组件
说明:不同于html
中的Image
元素,Reactive Native
中的Image
可嵌套其它元素
1 | <Image style={{ |
4 文字 Text 组件介绍
4.1 Text 元素
说明:和React Web
不同的是,在React Native
中,文本元素必须要用Text
组件包含起来,否则会出现报错
1 | <Text>Some Text</Text> |
4.2 Text 元素属性
文本元素支持的 css 属性 | 类型 |
---|---|
fontFamily |
string |
fontSize |
number |
fontStyle |
enum(normal , italic ) |
fontWeight |
enum(normal , bold , 100...900 ) |
letterSpacing |
number |
lineHeight |
number |
textAlign |
enum(auto , left , right , center ) |
writingDirection |
enum(auto , ltr , rtl ) |
overflow |
enum(visible , hidden ) |
4.3 Text 嵌套和Text 样式继承
说明:文本元素可以嵌套文本元素,内部使用NAAttributedString
注意:不同于 web 的 css 标准,React Native
中文本元素不能继承上级View
的样式,不过Text
内部可实现局部继承,如下组件中,and red
是bold
家red
1 | <Text style={{fontWeight: 'bold'}}> |
4.4 numberOfLines 属性
说明:文字可以通过numberOfLines
属性设置文本长度限制
1 | <Text numberOfLines={5}> |