Kodokon kodokon.com

レスポンシブデザイン: メディアクエリ、相対単位

モバイルファーストのアプローチ、メディアクエリ、rem・%・vw 単位を使って、インターフェースをあらゆる画面サイズに適応させましょう。

9 分 · 3 問

このレッスンを Kodokon で開く

プロのアプローチはモバイルファーストです。まず小さな画面向けのスタイルを書き、それから min-width のメディアクエリを使って空間が増えるにつれてレイアウトを充実させます。ベースのCSSはシンプルなまま保たれ、各ブレークポイントは実際に変わる部分だけを追加します。

CSS
.cards {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
}

@media (min-width: 768px) {
  .cards {
    grid-template-columns: repeat(3, 1fr);
  }
}
モバイルでは1列、768pxからは3列。

単位については、タイポグラフィにピクセルを使うのは禁止です。1rem はルート要素のフォントサイズ(デフォルトで16px)に等しく、そして何より、ユーザーがブラウザで選んだテキストサイズの設定を尊重します。フォントを20pxに設定した視覚障害のあるユーザーは、サイト全体が比例して拡大するのを目にします。ただし rem を使っていればの話です。

CSS
h1 {
  font-size: 2.5rem;
}

p {
  font-size: 1rem;
}

.section {
  padding: 4rem 1.5rem;
}
rem によるタイポグラフィと余白。すべてが比例したまま保たれます。

幅については、相対単位を組み合わせましょう。親の一部分を占めるための %、大きな画面で上限をかけるための max-width、ビューポート幅に連動したサイズのための vw(1vw はその1%に等しい)です。clamp(最小, 理想, 最大) 関数は、メディアクエリなしで適応する流動的な値を作ります。大きな見出しに最適です。

CSS
.container {
  width: 90%;
  max-width: 1200px;
  margin: 0 auto;
}

.hero-title {
  font-size: clamp(2rem, 5vw, 3.5rem);
}
上限をかけた流動的なコンテナと、ビューポートに追従する見出し。

理解度チェック

このレッスンの要点をしっかり覚えているか確認しましょう。

  1. モバイルファーストのアプローチで、大きな画面を対象にするにはどのメディアクエリを使いますか?
    • @media (max-width: 768px)
    • @media (min-width: 768px)
    • @media (device: desktop)
  2. デフォルトで 1rem は何に対応しますか?
    • 10ピクセル。CSS標準で固定された値
    • 親要素のフォントサイズ
    • ルート要素のフォントサイズ、デフォルトで16px
  3. 50vw は何に等しいですか?
    • ビューポート幅の50%
    • 親要素の幅の50%
    • ウィンドウに関係なく50ピクセル