1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

flexのこと理解してる??説明できる??((煽

Last updated at Posted at 2021-05-16

まず、flexには
・flex container(親)
・flex item(子)
の二種類が存在します.(両者はコード上ではどちらもflexと表記します。)
この二つは親子の関係にあり、flex item(子)の中に新たなflex item(子)を書いた場合はこの二つも親子の関係になります。すなわち、flex item(子)はflex container(親)にもなり得るわけです。
次のコードを見てみましょう。

App.js(2階層、つまり親子の関係のみ)
<View style={{flex: 1}}> #親
  <View style={{flex: 1}}> </View> #子
  <View style={{flex: 2}}> </View> #子
  <View style={{flex: 3}}> </View> #子
</View>

名称未設定のノート-2 2.jpg

このコードでは親子関係のみです。つまり第一階層がflex container、第二階層がflex itemに当たります。

App.js(3階層、つまり親子孫の関係、または親子の関係が二つ)
<View style={{flex: 1}}> #親
  <View style={{flex: 1}}> #子(一個下の階層との関係ではflex containerつまり親にもなり得る)
    <View style={{flex: 1}}> </View> #孫
    <View style={{flex: 2}}> </View> #孫
    <View style={{flex: 3}}> </View> #孫
  </View>
  <View style={{flex: 2}}> </View> #子
  <View style={{flex: 3}}> </View> #子
</View>

名称未設定のノート-3 3.jpg

このコードでは親子孫の関係があります。第一階層は親、第二階層は子(または親とも見なせる)、第三階層は子(第一階層からすれば孫)です。

そしてここが一番重要な部分ですが、

・同階層にflexを持つ’‘などが"複数"ある場合は、そのflexの数の比率で画面を分割します。
例えば最初の例では全画面が(デフォルトでは上から1:2:3)に分割されます。
また、二つ目の例では全画面が1:2:3に分割された後、3分割のうち一番上の領域がさらに1:2:3に分割されます。なので領域は全部で5つ生じます(サイズ比は1:2:3:12:18)になります。

・同階層にflexを持つ’‘などが"一つだけ"ある場合は、そのflexの数字自体には何の意味もありません。どんな数字でもいいので入れておけばオッケーです。(逆にflexを与えないと画面が真っ白になってしまいます。)
その後同階層に二つ目以降のなどを付け加えた時に初めて、画面をその比率で分割するという意味を持つようになります。

説明は以上です。最後まで読んでいただいてありがとうございました。少しでも参考になれば幸いです!

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?