HTML 速習チュートリアル

レスポンシブ Web デザイン (Responsive Web Design)

レスポンシブ Web デザインとは、デスクトップ、タブレット、スマートフォンなど、あらゆるデバイスで Web ページが適切に表示されるように構築する手法のことです。

かつてはデバイスごとに別々のサイト(PC用、ガラケー用など)を作っていましたが、現在は「一つの HTML」を CSS で調整して全デバイスに対応させるのが標準です。

1. ビューポートの設定 (The Viewport)

レスポンシブなページを作成するための第一歩は、<head> 要素内に以下の <meta> タグを追加することです。

<meta name="viewport" content="width=device-width, initial-scale=1.0">

このタグの意味:

  • width=device-width: ページの幅をデバイスの画面幅に合わせるようブラウザに指示します。
  • initial-scale=1.0: ブラウザが最初にページを読み込んだ時のズームレベルを 1(等倍)に設定します。
[!IMPORTANT]
このタグがないと、モバイルブラウザはデスクトップ用の幅(通常 980px 程度)で無理やりレンダリングしようとするため、文字が極端に小さく表示されてしまいます。

2. レスポンシブ画像 (Responsive Images)

画像が画面からはみ出さないようにするには、CSS で柔軟なサイズ指定を行います。

2.1 width プロパティ

width100% に設定すると、画像は常に親要素の幅いっぱいに拡大・縮小されますが、元サイズより大きくなると画質が劣化します。

<img src="img_girl.jpg" style="width:100%;">

2.2 max-width プロパティ

max-width: 100% を使用すると、画像は親要素の幅に合わせて縮小されますが、元のサイズより大きくなることはありません。これが最も推奨される設定です。

<img src="img_girl.jpg" style="max-width:100%; height:auto;">

2.3 <picture> 要素による使い分け

デバイスの画面幅に応じて「全く別の画像ファイル」を読み込みたい場合は、<picture> 要素を使用します。

<picture>
  <source srcset="img_smallflower.jpg" media="(max-width: 600px)">
  <source srcset="img_flowers.jpg" media="(max-width: 1500px)">
  <img src="img_flowers.jpg" alt="花">
</picture>

3. レスポンシブなテキストサイズ (Responsive Text Size)

テキストのサイズを画面幅に連動させたい場合、vw (viewport width) 単位を使用できます。
1vw はビューポート幅の 1% です。

<h1 style="font-size:10vw;">Hello World</h1>

4. メディアクエリ (Media Queries)

CSS のメディアクエリを使用すると、画面サイズに応じて異なるスタイルを適用できます。

/* デスクトップ用のスタイル */
.left, .main, .right {
  float: left;
  width: 33.33%;
}

/* 画面幅が 800px 以下の時のスタイル(タブレット・スマホ用) */
@media screen and (max-width: 800px) {
  .left, .main, .right {
    width: 100%; /* 横並びを解除して縦に並べる */
  }
}

5. レスポンシブ対応のフレームワーク

ゼロからレスポンシブデザインを作るのは大変なため、多くの開発者は既存の CSS フレームワーク を活用します。

  • Bootstrap: 世界で最も人気のあるフレームワーク。
  • Tailwind CSS: 柔軟なカスタマイズが可能なユーティリティファーストのフレームワーク。

6. まとめ

技術要素役割
viewport メタタグブラウザに画面幅の扱い方を伝える。
グリッドレイアウト内容をカラム(列)で整理し、画面幅で列数を変える。
メディアクエリ特定の画面幅(ブレークポイント)で CSS を切り替える。
フレキシブルな画像max-width: 100% で画像のはみ出しを防ぐ。

レスポンシブ対応は、今や「おまけ」ではなく Web 制作における「最低条件」です。まずは viewport タグを入れる癖をつけましょう。