[ 卡卡 DAY 7 ] - React Native style 必懂之 Flexbox弹性盒子(下)

上篇大致上介绍了一下於 css vs React Native 的 flexbox 差异
这篇主要就是实际上的运用了!

什麽是弹性盒子 flexbox ?

之所以叫盒子,就是要将弹性项目(子项目)放入这个盒子里面也就是容器,所以拥有 display:flex 属性的标签会是弹性项目们(子项目们)的容器(爸爸)。

看一下下面的 code

<View style={{ display: flex }}> 
  <Text>汉堡<Text>小黄瓜</Text></Text>
  <Text>三明治</Text>
  <Text>薯条</Text>
  <Text>热狗</Text>
  <Text>太阳蛋</Text>
</View>

卡卡我是这样分的
爸爸(View)- display: flex
孩子们(汉堡/三明治/薯条/热狗/太阳蛋) - 就是放在爸爸里面的元件
孙子(小黄瓜)跟他们的爸爸住一起(汉堡)

补充一下:
原生及就已经写上style
display:flex
所以不需要重复再写唷!

https://ithelp.ithome.com.tw/upload/images/20210919/20142011QBFLNSryTz.png

flex / justifyContent/ alignItem / flexDirection / flexWrap

简单的开始 我们来将文字都放在画面的中间

https://ithelp.ithome.com.tw/upload/images/20210919/20142011Lrgigr05Nj.png

记得我们在 Day 6 所建立的 flex1.js 我们於此档案的 styleseet 的 container 写入以下

const styles = StyleSheet.create({
    container: {
        flex: 1, 
        //flex 决定此元素在页面可用的区域,切成几块1 = 1块,所以一整块都是此元素的
        backgroundColor: 'pink',
        //backgroundColor 背景色
        alignItems: 'center',
        //alignItems 子项目对齐方式()
        justifyContent: 'center', 
        //justifyContent 子项目对齐方式(主轴)
    },
});

https://ithelp.ithome.com.tw/upload/images/20210919/20142011alNdbZZp26.png
flex: 1 // 整个画面只切一块
backgroundColor: 'pink' // 背景色区块就是代表盒子的区块
justifyContent: 'center' // 孩子们主轴对齐方式
alignItems: 'center' // 孩子们次轴对齐方式
以上设定将孩子们集中在中间噜!

React Native flexbox 中的元素介绍

大致上有这些元素

# 排列方向:
flexDirection: 'column' || 'row'
# 主轴对齐(爸爸):
justifyContent: 'flex-start' || 'flex-end' || 'center' || 'space-around' || 'space-between'
# 交叉轴对齐(爸爸):
alignItems: 'stretch' || 'flex-start' || 'flex-end' || 'center'
# 交叉轴子项目对齐(孩子):
alignSelf: 'flex-start' || 'flex-end' || 'center' || 'stretch' || 'auto'
# 换行(爸爸):
flexWrap: 'nowrap' || 'wrap' || 'wrap-reverse'
# Define relative fluidity of an element(爸爸):
flex: number (e.g. 1, 1/2)
#当空间不足,子项目长大缩小(子):
flexGrow/flexShrink: 1 || 0 
  1. flexWrap:是代表一条轴线排不下时,是否要换行。这是用於容器的属性(爸爸)。
  • 不换行 :nowrap代表这个容器中的项目是只能挤在同一行之中。
  • 换行:wrap则是允许多行。
    wrap-reverse 和 wrap 一样可以允许多行,但排列会相反。
    补充: wrap 属性须在容器属性(爸爸)里,搭配flexDirection:'row',才会有感!

下图为nowrap
https://ithelp.ithome.com.tw/upload/images/20210919/20142011p8Cmo0eJD9.png

下图为 wrap
https://ithelp.ithome.com.tw/upload/images/20210919/20142011ChWcJbZHQr.png

  1. alignItems、alignSelf、alignContent:是”对齐方式”的意思。
    alignSelf 是用於弹性项目的属性(孩子们)预设为stretch,是填满的意思。
    alignItems 跟 alignContent 则是用於容器的属性(爸爸),都是应用在 cross axis(次轴)。
  • alignSelf:为子项目在cross axis(相交轴)的对齐方式。
    // 请参照下图
    蓝色:flex-start
    红色:center
    橘色:flex-end
    黄色绿色:stretch
  • alignContent:只有在项目被 flexWrap 包裹(wrapped)成为多行排列时,才会发生作用。

https://ithelp.ithome.com.tw/upload/images/20210919/20142011WsUgeXADgM.png

  1. justifyContent: ”对齐”的意思,它是用在 main axis(主轴)时的对齐。这是用於容器的属性(爸爸)。
  • flex-start(默认值)
  • flex-end
  • center
  • space-between
  • space-around:两端对齐,项目之间的间隔都相等。
  • space-evenly:伸缩项目会平均地分布在行里,两端保留一半的空间。
  1. grow/shrink/basis: 这三个是用於子项目的”弹性”属性,也就是在版面或外部容器的尺寸变动时,子项目应该如何随之进行变动。设定在子项目。
  • grow 当有空间时,先”变大”的意思。
  • shrink 当画面不足时,先”缩水”的意思。
  • basis ”标准”的意思。
  1. flexDirection: 为排列方向,预设排列为垂直排列column。

https://ithelp.ithome.com.tw/upload/images/20210919/20142011ddpb1MpH7u.png

  • row 水平排列
  • column 垂直排列
  • column-reverse 垂直反方向牌
  • row-reverse 水平反方向着排

下图为 row 水平排列
https://ithelp.ithome.com.tw/upload/images/20210919/20142011ReDtV7lFVP.png

下图为 column 垂直排列
https://ithelp.ithome.com.tw/upload/images/20210919/201420110g6XLzoQfC.png

Day 7 done 希望大家有更了解 flexbox XD


<<:  Day8_HTML语法5

>>:  Day07-Response 最重要的是整整齐齐-API Resources

Golang + DevOps? Does DevOps Engineer Need to Learn Golang?"

Go for software developing. Go is becoming more fa...

Day 18 - for in & for of loop

for in 可以用在 object,也可以用在 Array 使用 for in 列举一个 obje...

Day29 用python写UI-聊聊Canvas(一)

终於进入最好玩的主题了,canvas就是可以在介面上做图形出来,赶快滑下去看吧~~~ ♠♣今天的文章...

Golang快速入门-2(Day5)

那就接续着昨天的内容,今天提到的也是大家常用的function及slice function go在...

[Day13] - 於 Django 中进行资料库设定

建立完环境之後,我们需要在Django的设定中,也告诉Django 资料库的资讯,Django 才会...