はじめに
どうも、NISHIKIです。
私ごとですが、ついに
テックエキスパート卒業しました。
卒業後の打ち上げで
終電逃したんで
Qiita書いてます(笑)
今日はテックエキスパートの
最終課題のチーム開発で
某メルカリサイトを作っているときに
全てのクラスにdisplay:flex;かけて
「あはは〜ちゃんとならんわ、教えて〜」
という強者がいたので
それについて
書いていこうと思います。
じゃあいきまーす。
flexboxとは?
まず、flexboxとは、何かと言うと
簡単にいうと横並びとか縦並びが
簡単にできるようになるというものです。
ものすごくざっくりいうと
この縦に並んだboxを
display:flex;をかけることにより、
下記のように横に並べることができます。
このようにflexboxが
自在に使えるようになれば
レイアウトの幅が広がるので
押さえておきたいですね。
2, flexboxを使うときはこの図を思い出して
flex boxを理解するには
下図を見ると分かりやすいと思います。
早速どんな図かというと、
これです。
おそらくflexboxを理解できていない人は
この図を見たことがない人が
大半なんじゃないかなと思います。
この図はMDNというサイトにも
載っているので見てみてください
MDN
図について解説していきます。
flexboxを理解する上で
大事になってくるのが
flex containerとflex itemです。
flex containerは
レイアウトしていきたい要素、
flex itemの親要素に当たる要素です。
この親要素にdisplay flexで
flex containerを定義すると
flex-directionというプロパティが設定されます。
これは何かと言うと
言葉のまんまなんですが
方向のことです。
これはデフォルトでrowに設定されています。
これがrowの時の方向の名前が
x軸方向はMain axis、y軸方向はCross axisと言います。
そして、flex itemはこのMain axisに沿って
並べられていきます。
したがって、flex itemが増えると
flex directionがrowの時は
どんどん右側に並べられていきます。
隙間とかはちょっと違うんですけど
ざっくりこんな感じです。
そして次に
flex-direction: column;としたときは
main axisとcross axisが入れ替わります。
こんな感じです。
先ほど説明したように、
flex itemはmain axisに沿って
並べられるのでflex itemは縦方向に並びます。
新たにflex itemを増やしていくと
今度は下に並べられていきます。
こんな感じです。
ここまで理解できれば大丈夫です。
あとは、flex container、flex item
それぞれにつけられるプロパティが決まっているので
それを知っておくだけです!
3-1, flex containerに使えるプロパティ
flex containerに使えるプロパティ
はい、こちらです。
・flex-wrap
・justify-content
・align-items
・align-content
これ以外ももちろんいっぱいありますが、
とりあえず知っといたら良いのは
この辺りかと思います。
特にjustify-contentはよく使いますね。
最初に出した例も
これはjustify-content: space-between;で
両端に寄せてます。
ちなみに上下左右中央に配置したいときは、
justify-content: center;
align-items: center;
とすると、真ん中になります。
3-2, flex itemに使えるプロパティ
flex itemに使えるプロパティ
はい、こちらです。
order
flex-grow
flex-shrink
flex-basis
align-self
こちらも他にも色々ありますが
とりあえずはこのくらい
知っておけばって感じです。
orderは個別に要素の並び替えの
順番を指定することができます。
デフォルトの値は0で小さい方から
順番になります。
ちなみに上の真ん中に寄せた
boxの1の方に
order: 1;
とすると、box2はデフォルトで0なので
順番が入れ替わります。
こんな感じです。
他のプロパティについても
説明していきたいところでは
ありますが、長くなりそうなんで
また気が向いたら書きます。
最後まで読んでいただき
ありがとうございました。