さとまたwiki

レスポンシブデザイン

画面サイズに応じたスタイルを適用する

ブレークポイント

プレフィックス最小幅デバイス
sm:640pxスマホ(横向き)
md:768pxタブレット
lg:1024pxノートPC
xl:1280pxデスクトップ
2xl:1536px大画面

モバイルファースト

重要:プレフィックスなしのクラスは全サイズに適用。 プレフィックス付きは「その幅以上」に適用されます。

基本的な使い方

小さい画面から順に指定

html
<!-- モバイル: 1列、タブレット: 2列、PC: 3列 -->
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
  <div>Item 1</div>
  <div>Item 2</div>
  <div>Item 3</div>
</div>

<!-- 解説 -->
<!-- grid-cols-1: 全サイズでデフォルト -->
<!-- md:grid-cols-2: 768px以上で2列 -->
<!-- lg:grid-cols-3: 1024px以上で3列 -->
プレビュー
モバイル → 1列
768px〜 → 2列
1024px〜 → 3列

実践例

レスポンシブなカードグリッド

画面幅に応じて列数を変更

html
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6">
  <div class="p-6 bg-white rounded-lg shadow">
    カード1
  </div>
  <div class="p-6 bg-white rounded-lg shadow">
    カード2
  </div>
  <!-- ... -->
</div>
プレビュー
カード1
カード2
カード3

レスポンシブなナビゲーション

モバイルでハンバーガーメニュー

html
<nav class="flex items-center justify-between p-4">
  <div class="text-xl font-bold">Logo</div>

  <!-- モバイル: 表示 -->
  <button class="md:hidden">
    <svg class="w-6 h-6"><!-- ハンバーガーアイコン --></svg>
  </button>

  <!-- デスクトップ: 表示 -->
  <div class="hidden md:flex gap-6">
    <a href="/">Home</a>
    <a href="/about">About</a>
    <a href="/contact">Contact</a>
  </div>
</nav>
プレビュー

レスポンシブなテキスト

画面サイズでフォントサイズを変更

html
<h1 class="text-2xl sm:text-3xl md:text-4xl lg:text-5xl font-bold">
  レスポンシブな見出し
</h1>

<p class="text-sm md:text-base lg:text-lg">
  本文テキスト
</p>
プレビュー

レスポンシブな見出し

本文テキスト(画面幅で大きくなる)

レスポンシブなスペーシング

画面サイズでpaddingを変更

html
<!-- モバイルで小さく、PCで大きく -->
<div class="p-4 md:p-8 lg:p-12">
  コンテンツ
</div>

<!-- コンテナ幅 -->
<div class="max-w-sm md:max-w-md lg:max-w-lg xl:max-w-xl mx-auto">
  中央寄せコンテナ
</div>
プレビュー
モバイル → p-4 (16px)
md → p-8 (32px)
lg → p-12 (48px)

表示・非表示の切り替え

hidden と block

画面サイズで表示を切り替え

html
<!-- モバイルのみ表示 -->
<div class="block md:hidden">
  モバイル用コンテンツ
</div>

<!-- タブレット以上で表示 -->
<div class="hidden md:block">
  PC用コンテンツ
</div>

<!-- 特定の範囲だけ表示 -->
<div class="hidden sm:block lg:hidden">
  640px〜1024px で表示
</div>
プレビュー
📱 block md:hidden (モバイルのみ)
💻 hidden md:block (タブレット以上)

Flexboxのレスポンシブ

縦並び→横並び

モバイルで縦、PCで横

html
<div class="flex flex-col md:flex-row gap-4">
  <div class="flex-1">サイドバー</div>
  <div class="flex-1">メインコンテンツ</div>
</div>

<!-- 順序の変更 -->
<div class="flex flex-col-reverse md:flex-row">
  <div>後ろ(モバイル)/ 左(PC)</div>
  <div>前(モバイル)/ 右(PC)</div>
</div>
プレビュー
サイドバー
メインコンテンツ