React Native 三:樣式

來源:互聯網
上載者:User

標籤:

一、聲明和使用樣式1.React Native裡面的樣式和使用如下面所示,StyleSheet.create這個建構函式不是必須的;
index.android.js檔案import React, {    … …} from ‘react-native‘;class AwesomeProject extends Component {  render() {    return (      <View>            //所有核心組件都可以接受style屬性           <Text style={styles.base}>Declare Style</Text>            //接受數組形式的多個style           <Text style={[styles.base, styles.background]}>Declare Style</Text>            //根據某些條件選擇性的添加樣式,否定型取值如false,undefined和null則會被忽略            <View style={[styles.base, true && styles.active]}/>            //可以在render方法中建立樣式,多個值衝突的時候,右邊的元素優先順序最高            <View style={[styles.background, styles.base, { width:80, height:80}]}/>       </View>    );  }}//聲明樣式var styles = StyleSheet.create({  base: {    width: 100,    height: 38,  },  background: {    backgroundColor: ‘#cccccc‘,  },  active: {    borderWidth: 2,    borderColor: ‘#00ff00‘,  },});AppRegistry.registerComponent(‘AwesomeProject‘, () => AwesomeProject);

二、Flexbox(彈性盒子模型)1.在布局上,React Native還實現了彈性盒子模型Flexbox。flexbox布局由伸縮容器和伸縮項目組成,任何一個元素都可以指定為flexbox布局;     其中設為display:flex或display:inline-flex的元素稱為伸縮容器;     伸縮容器的子項目稱為伸縮項目;2.和傳統的布局不一樣,它按照伸縮流的方向布局;3.預設情況下,伸縮容器由兩根軸組成,即主軸(main axis)和交叉軸(cross axis);     其中主軸的開始位置叫main start,結束位置叫main end;     交叉軸的開始位置叫cross start,結束位置叫cross end;     伸縮項目在主軸上佔據的空間叫main size,在交叉軸上佔據的空間叫cross size;     根據設定的情況,主軸可以是水平軸,也可以是垂直軸;     不管那個軸作為主軸,預設情況下伸縮項目總是沿著主軸,從主軸開始位置到主軸結束位置進行排列;4.伸縮容器屬性    下面我們一實際的Demo來示範下相關屬性的作用;
 index.android.js檔案:     import React, {         … …        } from ‘react-native‘;     class AwesomeProject extends Component {         render() {              return (                   <View style={styles.flexcontain}>                       <View style={styles.flexitem}>                         <Text>1</Text>                       </View>                       <View style={styles.flexitem}>                         <Text>2</Text>                       </View>                       <View style={styles.flexitem}>                         <Text>3</Text>                       </View>                       <View style={styles.flexitem}>                         <Text>4</Text>                       </View>                       <View style={[styles.flexitem,styles.item5]}>                         <Text>5</Text>                       </View>                </View>              );            }     }     var styles = StyleSheet.create({          flexcontain: {               width:300,              height:300,              borderWidth:1,              borderColor:‘blue‘,              flexDirection:‘row‘,              top:100,              left:100,         },         flexitem: {              width:50,              height:50,              borderWidth:1,              borderColor:‘white‘,              backgroundColor:‘gray‘,              justifyContent:‘center‘,              alignItems:‘center‘,       },       item5: {         alignSelf:‘stretch‘,       },     });     AppRegistry.registerComponent(‘AwesomeProject‘, () => AwesomeProject);
     flexDirection:指定主軸的方向;          row:水平方向;          column:豎直方向;
     flexWrap:主軸線方向空間不足的情況下,是否換行以及應該如何換行;          wrap:空間不足的情況下允許換行,若主軸方向為水平方向,則從上到下;若主軸方向是為豎直方向,從左至右;          nowrap:即使空間不足,伸縮容器也不允許換行;

     justifyContent:伸縮項目沿主軸方向的對其方式;          flex-start:伸縮項目沿主軸線的對其方式;          flex-end:伸縮項目沿著主軸線的結束位置靠齊;          center:伸縮項目向主軸中間位置靠齊;          space-between:伸縮項目會平均地分配在主軸線裡,第一伸縮項目在主軸線的開始位置,最後一個項目在主軸線的終點位置;          space-around:伸縮項目會平均分布在主軸線裡,兩端保持一半的空間;


     alignItems:伸縮項目在伸縮容器的交叉軸上的對其方式;          flex-start:伸縮項目向交叉軸的起始的位置對齊;          flex-end:伸縮項目向交叉軸的結束位置對齊;          center:伸縮項目向交叉軸的中間位置對齊;

     alignSelf:設定單獨伸縮項目在交叉軸上的對齊;          auto:伸縮項目按照自身設定的寬高顯示;          flex-start:伸縮項目向交叉軸開始位置靠齊;          flex-end:伸縮項目向交叉軸的結束位置靠齊;          center:伸縮項目向交叉軸的中心位置靠齊;

     borderBottomWidth/borderRightWidth/borderTopWidth/borderTopWidth:底部邊框的寬度;
     margin/marginTop/marginBottom/marginLeft/marginRight:外邊距;     padding/paddingTop/paddingBottom/paddingLeft/paddingRight:內邊距;     left/top/right/bottom:左上方座標;     width/height:寬高; 三、將樣式作為參數傳遞      後期期待....

React Native 三:樣式

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.