界面布局

采用标签声明界面元素, 类似 React. 界面布局系统采用 Flexbox 加上绝对定位, 和 Web 开发体验大体一致.

盒子模型

和 Web 一样, 可以通过 margin, border, padding 来控制布局跟盒子样式.

可以设置 backgroundColor, 然而没有 backgoundImage 属性, 需要通过 Image 元素组合(参考 http://stackoverflow.com/q/29322973/883571 ).

Flexbox

Flexbox 和 Web 基本一致, 主要的区别是默认 flexDirection: column. Demo 当中布思路基本上和 Web 端布局一致.

教程 http://www.ruanyifeng.com/blog/2015/07/flex-examples.html

默认样式

https://github.com/facebook/css-layout#default-values

div, span {
  box-sizing: border-box;
  position: relative;

  display: flex;
  flex-direction: column;
  align-items: stretch;
  flex-shrink: 0;
  align-content: flex-start;

  border: 0 solid black;
  margin: 0;
  padding: 0;
  min-width: 0;
}

绝对定位

支持 position: absolute, 默认根据父节点定位, 不需要在外层元素声明 position: relative.

不支持 position: fixed, 不支持 zIndex, 如果有绝对定位的元素, 需要通过组件顺序控制遮盖关系.

图片显示

图片必须使用具体大小, 不能使用百分比的写法, 自动伸缩的图片可以借助 Flexbox 配合 resizeMode 使用.

参考 http://wiki.jikexueyuan.com/project/react-native/image.html

文字居中

水平方向 textAlign: center, 垂直方向建议使用 Flexbox 控制. fontSizelineHeight 控制不清晰, Demo 开发过程中出现过垂直居中平台样式差异.

scrollView

可以通过属性控制水平竖直方向. .scrollTo API 调用能够设置是否使用动画.

scrollTo(options: {x: number = 0; y: number = 0; animated: boolean = true})
// or
scrollTo(y: number | { x?: number, y?: number, animated?: boolean }, x: number, animated: boolean)

注意平台差异, iOS 中可以设置滚动的值超出限定的区域, Android 不可以.

ListView

基于 scrollView 封装的, 继承了全部属性. 超出可视区域的元素不会立即渲染.

注意平台差异, 直接滚动到下方, iOS 中直接滚动到像素位置, Android 滚动到已有内容底部.

Sticky Header 只在 iOS 中生效.

点击区域

React Native 将点击区域封装成了 TouchableHighlight 元素. 其他元素没有 onPress 或者 onClick 事件.

results matching ""

    No results matching ""