【CSS】flexboxの基本と主軸の方向を決めるflex-direction【flexbox】

こばゆた
こばゆた

今回から数回に分けてflexboxについて学習していくよー!

きなこ
きなこ

flexboxってなぁに?何ができるの?

チャッピー<br>
チャッピー

また新しい用語が…💦

こばゆた
こばゆた

説明するより例を見てもらう方がわかりやすいんだけど、flexboxを使うと下の図のように良く見るレイアウトを作ることが簡単に作る事ができるんだ

こばゆた
こばゆた

ちなみにflexboxを使わないとこのような感じになります

チャッピー
チャッピー

全然違う!

スッキリしていないし、見づらい

こばゆた
こばゆた

そういうこと

flexboxはこのように指定するだけで並びを変えたりするのが簡単になり柔軟なレイアウトができるようになるんだ

では基本からまずいってみよう

スポンサーリンク

1.flexboxの基本

<div>aaa</div>
<div>bbb</div>
<div>ccc</div>
<div>ddd</div>

このようにdivやpタグなどのブロック要素は作られると縦に積まれます。

aaa
bbb
ccc
ddd

一個一個display: inline-block;を指定してもできますが、flexboxを使う事で簡単にできます。

やり方は親要素で囲み、その親要素の方にdisplayプロパティ、値を”flex”に設定します。

<div class="container"> <!--"containerクラスで囲む"-->
  <div>aaa</div>
  <div>bbb</div>
  <div>ccc</div>
  <div>ddd</div>
</div>
.container{
  display: flex; /*横並びにする*/
}
aaa
bbb
ccc
ddd

きなこ
きなこ

簡単に横並びになった!

ちなみにclass名はなんでも良いのですが親要素を”flex-container”、子要素を”flex-item”と呼ぶので”container”にする事が多いです。

同様に縦に並んでいるリストもdisplay: flex; を親要素の方に使う事で横並びにする事ができます。

  • リスト1
  • リスト2
  • リスト3
  • リスト4
<ul class="flex-list">
  <li>リスト1</li>
  <li>リスト2</li>
  <li>リスト3</li>
  <li>リスト4</li>
</ul>
.flex-list{
  display: flex;
  list-style: none; /*リストの点を消す*/
}
  • リスト1
  • リスト2
  • リスト3
  • リスト4
こばゆた
こばゆた

こちらも横並びになりました

きなこ
きなこ

こっちは囲わなくても良いの?

こばゆた
こばゆた

li要素は初めから親要素であるul要素で囲まれているためわざわざ作って囲む必要はないよ

でも複数リストがある場合だとこんがらがるからクラス名は付けた方がいいかな

スポンサーリンク

2.子要素の並び”flex-directionプロパティ”

flex-directionプロパティは値を指定することで”flex item(子要素)”がどちらの方向(主軸の向き)に並ぶかを指定する事ができます。

セレクター{
  display: flex;
  flex-direction: 値;
}

2-1.row

初期値は”row”で主軸が横並びになります。

セレクター{
  display: flex;
  flex-direction: row; /*display: flex;を指定した時点で値は"row"なので、あえて指定しなくても良い*/
}

<div class="container">
  <div>aaa</div>
  <div>bbb</div>
  <div>ccc</div>
  <div>ddd</div>
</div>
.container{
  display: flex;
  flex-direction: row;
}
aaa
bbb
ccc
ddd

初期値なので目に見えた変化はありません。

2-2.row-reverse

主軸が横になり、かつ反転します(右から左へ並ぶ)。

.container{
  display: flex;
  flex-direction: row-reverse;
}

aaa
bbb
ccc
ddd

2-3.column

“column”は主軸が縦になります。

.container{
  display: flex;
  flex-direction: column;
}

aaa
bbb
ccc
ddd

2-4.column-reverse

主軸が縦になり、かつ反転します(下から上へ並ぶ)。

.container{
  display: flex;
  flex-direction: column-reverse;
}

aaa
bbb
ccc
ddd

順番が反対になってますね。

まとめるとこんな感じです。

ちなみに主軸と交わる軸を交差軸といいます。

こばゆた
こばゆた

どちらが主軸で交差軸かという考え方は常に意識しましょう

次回以降この考えが大事になってきます

きなこ
きなこ

はーい

3.まとめ

display: flex;まとめ

親要素で囲み、display: flex;を使えば横並びにできる。

<div class="container">
  <div>aaa</div>
  <div>bbb</div>
  <div>ccc</div>
  <div>ddd</div>
</div>
セレクター{
  display: flex;
}
aaa
bbb
ccc
ddd

flex-directionまとめ

flex-directionプロパティは子要素の並び(主軸の向き)を指定する事ができる。

セレクター{
  display: flex;
  flex-direction: 値;
}

クリックで値が変わります

aaa
bbb
ccc
ddd
row-reverse
column
column-reverse
row

・reverseは軸が反転すると考える

こばゆた
こばゆた

次回はこの主軸と交差軸についてのプロパティについて学習します

コメント