レスポンシブデザイン
画面サイズに応じてレイアウトを自動調整し、あらゆるデバイスで最適な表示を実現する手法
レスポンシブデザインとは
レスポンシブデザイン (Responsive Design) は、CSS メディアクエリと柔軟なレイアウトで、画面サイズ (スマートフォン、タブレット、デスクトップ) に応じて表示を自動調整する手法である。Ethan Marcotte が 2010 年に提唱した。
viewport メタタグ
viewport メタタグの例を示す。
<meta name="viewport" content="width=device-width, initial-scale=1" />
メディアクエリ
メディアクエリの例を示す。
/* モバイルファースト: 小さい画面をデフォルトに */
.container { padding: 1rem; }
/* タブレット以上 */
@media (min-width: 768px) {
.container { padding: 2rem; max-width: 768px; margin: 0 auto; }
}
/* デスクトップ */
@media (min-width: 1024px) {
.container { max-width: 1200px; }
}
ブレークポイント
代表的なブレークポイントを以下にまとめる。
| デバイス | 幅 | Tailwind |
|---|---|---|
| モバイル | < 640px | デフォルト |
| タブレット | ≥ 768px | md: |
| デスクトップ | ≥ 1024px | lg: |
| ワイド | ≥ 1280px | xl: |
Flexbox + Grid
Flexbox + Grid の例を示す。
/* Flexbox: 1列 → 3列 */
.cards { display: flex; flex-wrap: wrap; gap: 1rem; }
.card { flex: 1 1 100%; }
@media (min-width: 768px) { .card { flex: 1 1 calc(33.3% - 1rem); } }
/* Grid: auto-fit で自動調整 */
.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 1rem; }
レスポンシブ画像
レスポンシブ画像の例を示す。
<!-- srcset で画面サイズに応じた画像を配信 -->
<img
src="photo-800.webp"
srcset="photo-400.webp 400w, photo-800.webp 800w, photo-1200.webp 1200w"
sizes="(max-width: 768px) 100vw, 50vw"
alt="Photo"
/>
Container Queries (CSS 2023)
メディアクエリはビューポート幅に基づくが、Container Queries は親コンテナの幅に基づく。
.card-container { container-type: inline-size; }
@container (min-width: 400px) {
.card { display: flex; }
}
モバイルファースト vs デスクトップファースト
モバイルファーストとデスクトップファーストの違いを以下にまとめる。
| アプローチ | メディアクエリ | 推奨 |
|---|---|---|
| モバイルファースト | min-width |
✅ (モバイルトラフィックが多い) |
| デスクトップファースト | max-width |
管理画面など |
テスト
Chrome DevTools のデバイスモードで各画面サイズをシミュレートする。実機テストも重要。
レスポンシブデザインの関連書籍も参考になる。
この記事は役に立ちましたか?
関連用語
CSS Grid
2 次元のグリッドレイアウトを宣言的に定義する CSS のレイアウトシステム
Flexbox
1 次元の柔軟なレイアウトを実現する CSS のレイアウトモデル
Core Web Vitals
Google が定義した Web ページのユーザー体験を測定する 3 つの指標 (LCP, INP, CLS)
N+1 問題
1 回のクエリで取得したリストの各要素に対して追加クエリが発行され、クエリ数が爆発する性能問題
シャーディング
データを複数のデータベースインスタンスに水平分割し、書き込みスループットとストレージ容量をスケールさせる手法
GraphQL
クライアントが必要なデータだけを指定して取得できる API クエリ言語
関連する記事
「あとで読む」ブックマークが 100 件を超えたら本を買え
ブラウザのブックマークに技術記事を溜め込んでいませんか。断片的な記事を 100 件読むより、同じテーマの本を 1 冊読む方が効率的な理由を解説します。
O'Reilly の表紙はなぜ動物なのか - 技術書の装丁に隠された物語
O'Reilly の動物表紙の由来、技術書のフォント選び、判型の違いが読みやすさに与える影響など、装丁にまつわる雑学を紹介します。
foo, bar, Alice, Bob はどこから来たのか - 技術書のサンプル名の由来
技術書やコード例でおなじみの foo, bar, Alice, Bob。これらの名前にはそれぞれ歴史的な由来があります。知っていると少し楽しくなる雑学を紹介します。