Flexboxで横並びにする — 最初に覚える3つのプロパティ
横並びはCSSの最初の山場です。Flexboxはプロパティが多く見えますが、入り口で必要なのは3つだけ。並び方が変わる様子を動かしながら確かめます。
「要素を横に並べたい」。ここで最初につまずく人はとても多いです。かつては float という指定が使われていましたが、いまは Flexbox を使えば1行で解決します。
親に display: flex を書くだけ
ポイントは、並べたい要素そのものではなく、それらを囲んでいる親に指定することです。親が「中身を横に並べる箱」に変わり、中の要素が自動的に横並びになります。
style.css の display: flex を消してみてください。縦に戻ります。これが Flexbox の効果です。
覚えるのは3つ
- gap … 要素と要素の間隔。margin より簡単で、端に余分な余白が付かない
- justify-content … 横方向の位置。左寄せ・中央・両端揃えなどを決める
- align-items … 縦方向の位置。高さの違うものを上・中央・下で揃える
justify-content でよく使う値は flex-start(左寄せ・初期値)、center(中央)、space-between(両端に寄せて間を均等に)の3つです。ナビゲーションの「ロゴは左、メニューは右」は space-between で作れます。
space-between を center や flex-end に書き換えてみてください。3つの箱の位置が変わります。
上下中央揃えも1行で終わる
かつては面倒だった「箱の中で上下中央に置く」も、Flexboxなら justify-content と align-items を両方 center にするだけです。
align-items を flex-start にすると上に、flex-end にすると下に寄ります。
画面が狭いときは折り返す
横並びのままだと、スマホで要素がつぶれてしまいます。flex-wrap: wrap を足しておくと、入りきらない要素が次の行へ折り返します。まずはこれだけ知っておけば、極端な崩れは防げます。本格的な出し分けは、メディアクエリで行います。