レスポンシブ 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 プロパティ
width を 100% に設定すると、画像は常に親要素の幅いっぱいに拡大・縮小されますが、元サイズより大きくなると画質が劣化します。
<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 タグを入れる癖をつけましょう。