STEP F:メディアクエリが無効化される

visibility_off現象

  • モバイルやタブレットなど画面幅を切り替えても、@media 内のスタイルが適用されない
  • レスポンシブ用のレイアウト変更が反映されず、常にPC版のまま崩れた表示になる

help_outline原因

<meta name="viewport"> が設定されていない、または誤記
ビューポートの指定がないと、スマートフォンはPCサイト全体を縮小して表示しようとするため、メディアクエリが意図通りに機能しません。
メディアクエリの記述ミス
括弧の閉じ忘れ、比較演算子(min-width / max-width)の間違い、コロンやカンマ位置の誤りなどが考えられます。
CSSの読み込み順序が逆転している
レスポンシブ用のスタイルが、基本のスタイルより先に読み込まれてしまい、後から上書きされている可能性があります。
セレクタの優先度が低く上書きされる
同じ要素に対して、メディアクエリ外のより強力なセレクタ(例: #id .classなど)が指定されていると、そちらが優先されます。

build対策・コード例

HTMLの<head>内にビューポート設定を追加

この一行がなければ、レスポンシブ対応は始まりません。必ず<head>内に記述します。

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

メディアクエリの書き方を確認・修正

/* モバイルファースト(小→大)の例 */
@media (min-width: 768px) {
  .container {
    max-width: 720px;
  }
}

/* PCファースト(大→小)の例 */
@media (max-width: 768px) {
  .container {
    padding: 0 1rem;
  }
}

※括弧やコロン、セミコロンの位置に誤りがないか要チェック

CSSの読み込み順を調整

<!-- 基本スタイル -->
<link rel="stylesheet" href="css/style.css">

<!-- レスポンシブ用のスタイルは必ず後で読み込む -->
<link rel="stylesheet" href="css/responsive.css">

優先度を強める/詳細セレクタを使う

@media (max-width: 768px) {
  body .header .logo {
    font-size: 1.2rem;  /* より具体的なセレクタで上書き */
  }
}

bug_reportデバッグ方法

  • 開発者ツールの「Device Toolbar」を使う
    Chrome DevTools の Toggle Device Toolbar(Ctrl+Shift+M)で画面幅を自由に切り替えながら、スタイルが適用されるか確認します。
  • 実際にどのCSSルールが適用されているか確認
    「Elements」パネルで要素を選択し、「Styles」パネルでどのメディアクエリが有効になっているか、どのスタイルが上書きされているかを確認できます。
  • CSSファイルのソースマップをたどる
    どのファイルのどの行でルールが定義されているかを特定し、読み込み順やファイル名の誤りをチェックします。

school応用ポイント:メディアクエリの管理

変数化して使いまわす

ブレイクポイント(幅の切り替え地点)をCSS変数にしておくと、後からまとめて変更できるので管理が楽になります。

:root {
  --breakpoint-sm: 480px;
  --breakpoint-md: 768px;
  --breakpoint-lg: 1024px;
}
@media (max-width: var(--breakpoint-md)) { … }

モジュールごとに分割

レイアウト/テキスト/コンポーネントごとにメディアクエリを`responsive.css`など別ファイルにまとめると、`style.css`の見通しが良くなります。


チェックポイント

<meta name="viewport"> が正しく設定されている
✅ メディアクエリ内の括弧・比較演算子に誤りがない
✅ レスポンシブ用CSSが基本CSSの後に読み込まれている
✅ セレクタの優先度で上書きされていないか確認した
✅ 実機やデバイスモードで必ず表示テストを行った