鍍金池/ 教程/ HTML/ 樣式
JavaScript 環(huán)境
計(jì)時(shí)器
Native 模塊(iOS)
入門
在設(shè)備上運(yùn)行
ProgressBarAndroid
iOS 應(yīng)用程序狀態(tài)
網(wǎng)絡(luò)
ToolbarAndroid
測(cè)試
輔助功能
網(wǎng)絡(luò)信息
DrawerLayoutAndroid
樣式表
手勢(shì)應(yīng)答系統(tǒng)
與現(xiàn)有的應(yīng)用程序集成
樣式
教程
不透明觸摸
調(diào)試 React Native 應(yīng)用
iOS 活動(dòng)指示器
導(dǎo)航器
無(wú)反饋觸摸
動(dòng)畫布局
Web 視圖
鏈接庫(kù)
像素比率
React Native 官網(wǎng)首頁(yè)介紹
iOS 導(dǎo)航器
交互管理器
全景響應(yīng)器
SwitchAndroid
TabBarIOS.Item
相機(jī)滾動(dòng)
ToastAndroid
iOS 震動(dòng)
BackAndroid
文本輸入
iOS 選擇器
應(yīng)用程序注冊(cè)表
iOS 開(kāi)關(guān)
滾動(dòng)視圖
iOS 日期選擇器
iOS 警告
iOS 鏈接
視圖
圖片
列表視圖
異步存儲(chǔ)
Native UI 組件(Android)
iOS 滑塊
Map 視圖
高亮觸摸
iOS 推送通知
文本
定位
iOS 狀態(tài)欄
Native UI 組件(iOS)
在設(shè)備上運(yùn)行(Android)
Native 模塊(Android)
Flexbox
已知 Issues
iOS 選項(xiàng)卡
安裝 Android 運(yùn)行環(huán)境

樣式

React Native 不實(shí)現(xiàn) CSS,而是依賴于 JavaScript 來(lái)為你的應(yīng)用程序設(shè)置樣式。這是一個(gè)有爭(zhēng)議的決定,你可以閱讀那些幻燈片,了解背后的基本原理。

聲明樣式

在 React Native 中聲明樣式的方法如下:

var styles = StyleSheet.create({
  base: {
    width: 38,
    height: 38,
  },
  background: {
    backgroundColor: '#222222',
  },
  active: {
    borderWidth: 2,
    borderColor: '#00ff00',
  },
}); 

StyleSheet.create 的創(chuàng)建是可選的,但提供了一些關(guān)鍵優(yōu)勢(shì)。它通過(guò)將它們轉(zhuǎn)換為引用一個(gè)內(nèi)部表的純數(shù)字,來(lái)確保值是不可變的不透明的。通過(guò)將它放在文件的最后,也確保了它們?yōu)閼?yīng)用程序只創(chuàng)建一次,而不是每一個(gè) render 都創(chuàng)建。

所有的屬性名稱和值是工作在網(wǎng)絡(luò)中的一個(gè)子集。對(duì)于布局來(lái)說(shuō),React Native實(shí)現(xiàn)了 Flexbox。

使用樣式

所有的核心組件接受樣式屬性。

<Text style={styles.base} />
<View style={styles.background} />

它們也接受一系列的樣式。

<View style={[styles.base, styles.background]} />

行為與 Object.assign 相同:在沖突值的情況下,從最右邊元素的值將會(huì)優(yōu)先,并且 falsy 值如 false,undefinednull 將被忽略。一個(gè)常見(jiàn)的模式是基于某些條件有條件地添加一個(gè)樣式。

<View style={[styles.base, this.state.active && styles.active]} /> 

最后,如果真的需要,您還可以在render中創(chuàng)建樣式對(duì)象,但是這種做法非常不贊成。最后把它們放在數(shù)組定義中。

<View
  style={[styles.base, {
    width: this.state.width,
    height: this.state.width * this.state.aspectRatio
  }]}
/>

樣式傳遞

為了讓一個(gè) call site 定制你的子組件的樣式,你可以通過(guò)樣式傳遞。使用 View.propTypes.styleText.propTypes.style,以確保只有樣式被傳遞了。

var List = React.createClass({
  propTypes: {
    style: View.propTypes.style,
    elementStyle: View.propTypes.style,
  },
  render: function() {
    return (
      <View style={this.props.style}>
        {elements.map((element) =>
          <View style={[styles.element, this.props.elementStyle]} />
        )}
      </View>
    );
  }
});
// ... in another file ...
<List style={styles.list} elementStyle={styles.listElement} />

屬性支持

你可以在以下的鏈接中檢測(cè)最新的 CSS 屬性支持。

上一篇:iOS 鏈接下一篇:滾動(dòng)視圖