CSS FlexboxはWebコーディングのレイアウトを柔軟に作成できるため、様々な場面で使われています。
今回は、CSS Flexboxを使って要素の左寄せ・中央寄せ・右寄せするための指定方法とTipsをご紹介します。
Flexboxの基本
まず、Flexboxを使用するときには、親要素となるcontainer
と、子要素となるitem
を使ってHTMLを記述します。
仮に親要素のクラスにf-container
、子要素のクラスにf-item
を指定すると、下記のようなコードになります。
<div class="f-container">
<div class="f-item"></div>
<div class="f-item"></div>
<div class="f-item"></div>
</div>
そして、CSSでは下記のように親要素(f-container)に対してdisplay: flex;
を指定します。
.f-container {
display: flex;
}
これでFlexboxを適用したコードの基本形が完成しました。下記では、f-container
を親要素のクラス、f-item
を子要素のクラス名に指定した場合のレイアウトの指定方法を説明していきます。
横方向の位置を揃える
では、Flexboxを使って子要素を左寄せ・中央寄せ・右寄せする方法の紹介です。
Flexboxで横方向の位置を揃えるためには、親要素のjustify-content
プロパティで表示方法を指定します。
例えば、下記のように記述すると要素が左寄せされて配置されるようになります。
.f-container {
display: flex;
justify-content:
flex-start;
}
justify-content
プロパティで指定できる値には下記のようなものがあります。
値 | 説明 |
---|---|
flex-start | 左寄せ |
center | 中央寄せ |
flex-end | 右寄せ |
space-around | 左右両端のスペースを含めて等間隔に配置 |
space-between | 左右両端のスペースを埋めて等間隔に配置 |
子要素を折り返して表示したい時
子要素を折り返して表示したい時も、justify-content
を指定することで左寄せ・中央寄せ・右寄せすることが可能です。
まず、子要素を折り返して表示するために、親要素にflex-wrap: wrap
を指定しましょう。
.f-container {
display: flex;
flex-wrap: wrap;
justify-content: flex-start;
}
ただし、justify-content: space-between;
を指定すると、下記のように子要素が複数行に渡って表示される時に最後の行の要素が下記のように左寄せされなくなってしまいます。
これを解決するためには、justify-content: space-between
ではなく、justify-content: flex-start
を指定してレイアウトを作成する方法が有効です。
要素を横いっぱいに配置して最後の行を左寄せする方法
JavaScriptのコードで擬似的に子要素を作って左寄せする方法もありますが、justify-content: space-between;
ではなく、justify-content: flex-start;
を使ってレイアウトを作成すると、CSSだけで下記のように一番最後の行も左寄せで表示することができます。
HTMLのコードは下記のようにして、f-container
クラスの親要素の中にf-item
クラスを指定した子要素を記述します。
<div class="f-container">
<div class="f-item">
<div class="f-item">
<div class="f-item">
<div class="f-item">
</div>
CSSのコードは下記のようになります。
.f-container {
display: flex;
flex-wrap: wrap;
justify-content: flex-start;
}
.f-item {
width: 30%;
margin-right: 5%;
}
.f-item:nth-child(3n) {
margin-right: 0;
}
.f-item
にwidthとmargin-leftを指定することで、表示幅と表示間隔を調整します。
ただし、このままだと一番右の列にもmargin-rightが適用されてしまいレイアウトが崩れてしまいます。そのため、.f-item:nth-child(3n)
に対してmargin-right:0
を指定することで右端にぴったり表示されるようにしています。
横に並べる要素の数は2つや4つ、5つにすることも可能ですが、その場合はwidthやnth-childの部分の値を変更する必要があります。
Flexboxを使いこなしてレイアウトをマスターしよう!
CSS Flexboxを使いこなせるようになることで、要素を横並びに表示するだけではなく、色々なレイアウトを簡単に作れるようになります。
もっとFlexboxの使い方を知りたい方は、下記のページで詳しくご紹介しているのでぜひ参考にしてください。