Web初めてのHTML/CSS

Day 2CSSの考え方 — 見た目を整える

レスポンシブ — 画面幅で変わるレイアウト

同じHTMLでもスマホとPCで見え方を変える。伸び縮みするレイアウトの考え方を学ぶ。

同じページを、いろんな画面で見る時代

あなたのサイトは、大きなPC画面でも、細長いスマホでも見られます。PCで横3列に並んでいたカードが、スマホでも横3列のままだと、一つひとつが小さすぎて読めません。画面の幅に合わせて見た目を変える考え方を(レスポンシブ)と呼びます。

たとえるなら

水は、入れる器に合わせて形を変えます。細いコップなら細長く、広い皿なら平たく。レスポンシブなレイアウトも同じで、画面という器に合わせて、中身が自然に形を変えます。

まずは「伸び縮みする」土台

レスポンシブの第一歩は、幅をピクセルでガチガチに固定しないことです。幅を 300px と決め打ちすると、狭い画面でははみ出します。代わりに % や、画面幅に応じた単位を使うと、器に合わせて伸び縮みします。

固定幅ではみ出す

画面が600pxより狭いスマホでは、横スクロールが出てはみ出す

CSS
.card {
  width: 600px;
}

伸び縮みする

広い画面では最大600px、狭い画面では画面いっぱいに縮んで収まる

CSS
.card {
  width: 100%;
  max-width: 600px;
}

なぜ幅を固定しない方がいいの?

画面の幅は人によってバラバラだからです。固定してしまうと、ある画面ではちょうどよくても、別の画面でははみ出したり隙間が空いたりします。%やmax-widthで「上限は決めるが、狭ければ縮む」としておくと、多くの画面に一つのコードで対応できます。

幅で切り替える「メディアクエリ」

伸び縮みだけでは足りない場面もあります。たとえば「PCでは横3列、スマホでは縦1列」のように、並び方そのものを変えたいときです。これには「画面幅がこれ以下なら、このスタイルを使う」という条件付きの指示、メディアクエリを使います。

CSS
.cards {
  display: flex;
}
@media (max-width: 600px) {
  .cards {
    flex-direction: column;
  }
}
普段は横並び。画面幅が600px以下のときだけ、縦並びに切り替える

@media (max-width: 600px) が「画面幅が600px以下のとき」という条件です。その波カッコの中に書いたスタイルは、その条件を満たしたときだけ効きます。AI生成CSSでこの記号を見つけたら、「ここはスマホなど狭い画面向けの調整だな」と読めます。

AIにはこう頼む

スマホでの見え方を直したいときは「スマホ(画面が狭いとき)ではカードを縦1列にして」と頼みます。AIはこれを @media のメディアクエリに翻訳してくれます。逆にコードで @media を見たら、特定の画面幅向けの調整だと読み取りましょう。

確認を忘れずに

AIが作ったページは、必ずPC幅とスマホ幅の両方で見た目を確認しましょう。片方だけ整っていて、もう片方が崩れていることはよくあります。ブラウザの画面を横に伸び縮みさせるだけでも、崩れに気づけます。

読んでも腑に落ちない所は、AIに噛み砕いてもらいましょう。

理解度チェック

答えられれば、面接で説明できる状態に一歩近づきます。

Q1

レスポンシブで、狭い画面でもはみ出しにくいのはどの書き方?

Q2

CSSに @media (max-width: 600px) { ... } とありました。これは何を意味する?

Q3

レスポンシブデザインとは何か、たとえを使って説明してください。

記述式です。まず自分の言葉で答えを考えてから、模範解答を開いて自己採点してください。