Day 2・CSSの考え方 — 見た目を整える
並べる — Flexboxの考え方
箱をきれいに横一列や縦に並べる仕組みがFlexbox。棚に物を並べるイメージで意図を読む。
箱をどう並べるか、という問題
前回、すべての要素は箱だと学びました。次の課題は「その箱たちをどう並べるか」です。何もしないと、多くの箱は上から下へ縦にひとつずつ積まれます。でも実際のサイトでは、メニューが横一列に並んだり、カードが横に3つ並んだりします。これを担当するのがです。
たとえるなら
Flexboxは「棚」です。棚(親の箱)に指示を出すと、中に入れた物(子の箱たち)を、横一列に並べたり、均等に間隔をあけたり、中央に寄せたりできます。並べ方を決めるのは、物ではなく棚のほうです。
まず親に「棚になれ」と伝える
Flexboxは、並べたい箱そのものではなく、それらを囲む親の箱に対して指示します。親に display: flex を書いた瞬間、その親は「棚」になり、中の子要素たちが横一列に並びます。
<nav class="menu">
<a href="/">ホーム</a>
<a href="/about">会社概要</a>
<a href="/contact">お問い合わせ</a>
</nav>.menu {
display: flex;
gap: 16px;
}display: flex が「この親を棚にする」という合図です。gap は棚に並んだ物どうしの間隔。この2行を見つけたら、「あ、中身を横に並べているんだな」と読めます。
並び方をそろえる二つの向き
棚には「並ぶ方向」と「それに直交する方向」があります。よく出てくる二つのプロパティを、意味とセットで覚えましょう。
- justify-content … 並んでいる方向のそろえ方。横並びなら「左寄せ/中央/右寄せ/均等」など
- align-items … 並びと直交する方向のそろえ方。横並びなら「上寄せ/中央/下寄せ」など
なぜ縦横で名前が違うの?
Flexboxは並ぶ向き(主軸)を基準に考えるからです。justify-contentは主軸方向、align-itemsはそれと垂直方向のそろえ、と役割を分けることで、横並びでも縦並びでも同じ考え方が使えます。
縦に積まれたまま
指示がないので、リンクが縦にひとつずつ並んで間延びして見える
.menu {
/* display: flex がない */
}横一列で中央ぞろえ
棚にして横並びにし、全体を中央に寄せてメニューらしく整えた
.menu {
display: flex;
justify-content: center;
gap: 16px;
}AIにはこう頼む
並びを直したいときは「このメニューを横並びにして、間隔を広げて」「カードを中央にそろえて」と、並べる向きと寄せ方を言葉で伝えます。AIはそれをdisplay: flexやjustify-contentに翻訳してくれます。
読んでも腑に落ちない所は、AIに噛み砕いてもらいましょう。
理解度チェック
答えられれば、面接で説明できる状態に一歩近づきます。
縦に並んでいるメニューを横一列にしたいとき、まず何を書きますか?
Flexboxで、並んだ子要素の「間隔」をあけるのに使うプロパティは?
Flexboxとは何をする仕組みか、たとえを使って説明してください。
記述式です。まず自分の言葉で答えを考えてから、模範解答を開いて自己採点してください。