目次
- はじめに|レスポンシブ対応は「メディアクエリ書けばOK」じゃない
- CSSレスポンシブとは何か
- レスポンシブ対応が必要な理由
- レスポンシブ対応の基本構成(まず押さえる3つ)
- viewportの設定(最初に必ず入れる)
- メディアクエリの基本(スマホ対応の入口)
- よく使われるブレイクポイント(迷ったらこれ)
- デスクトップファーストとモバイルファースト(実務での選び方)
- PC基準で作る(デスクトップファースト)
- スマホ基準で作る(モバイルファースト)
- レスポンシブ対応でよく使うCSSテクニック(この辺が効く)
- 画像のはみ出しを止める(横スクロール問題の常連)
- レイアウトの幅を「固定しない」基本形
- 横並びを縦並びに切り替える(スマホ崩れ対策の王道)
- 文字が小さすぎる問題を直す(やりすぎないのがコツ)
- 余白をスマホだけ詰める(体感で効く)
- レスポンシブでよくある失敗と対処(現場でよく見るやつ)
- スマホで横スクロールが出る
- スマホで文字やボタンが押しづらい
- スマホだけレイアウトが崩れるのに原因が分からない
- DevToolsでレスポンシブ崩れを特定する手順(差別化ポイント)
- 画面幅を再現する
- どのCSSが効いているかを見る
- チェックリスト|スマホ崩れを直す順番(迷ったらこれ)
- 初心者におすすめの最小構成(まずはこれで十分)
- よくある質問
- レスポンシブ対応はSEOに影響しますか
- ブレイクポイントはいくつ必要ですか
- まとめ|レスポンシブは“自然に縮む設計”+“必要な所だけメディアクエリ”が強い
はじめに|レスポンシブ対応は「メディアクエリ書けばOK」じゃない
Webサイト制作で必ず求められるのがレスポンシブ対応です。
- PCではきれいなのにスマホで崩れる
- 文字が小さくて読みにくい
- なんか横スクロールが出る(しかも原因が見つからない)
- 直したつもりが別の箇所が壊れる
これ、あるあるです。
私も「画像を小さくしたのに横スクロールが消えない」って沼ったことがあります。
原因は画像じゃなくて、画面外に飛ばしたメニュー(position+固定幅)が“実体としてはみ出してた”だけでした。見た目だけだと気づきにくいんですよね。
この記事では「css レスポンシブ」で検索してきた人が、
基本 → 実務の型 → スマホ崩れの直し方 → DevToolsでの切り分けまで一気に理解できるようにまとめます。
CSSレスポンシブとは何か
スニペット向けに一文でまとめます。
CSSレスポンシブ対応は、画面幅や端末に合わせてレイアウト・文字・余白などを調整し、PC/タブレット/スマホで見やすく使いやすい表示にすることです。
1つのHTMLで、次の表示に対応できます。
- PC(デスクトップ)
- タブレット
- スマートフォン
レスポンシブ対応が必要な理由
理由はシンプルです。
- 端末の画面幅がバラバラ
- スマホ閲覧が多い
- スマホで読みにくい・押しづらいサイトは離脱されやすい
レスポンシブ対応は、見た目の問題だけじゃなく「使いやすさ」に直結します。
レスポンシブ対応の基本構成(まず押さえる3つ)
CSSだけでレスポンシブ対応するなら、軸はこの3つです。
- viewport設定
- メディアクエリ
- 固定幅を避ける(自然に縮む設計)
viewportの設定(最初に必ず入れる)
これが無いと、スマホでメディアクエリが噛み合わないことがあります。
<meta name="viewport" content="width=device-width, initial-scale=1.0">
「スマホだけ効かない」系は、まずここを疑うのが早いです。
メディアクエリの基本(スマホ対応の入口)
@media (max-width: 768px) {
/* 画面幅が768px以下のときだけ適用 */
.container {
padding: 0 16px;
}
}
この形が一番よく使われます。
よく使われるブレイクポイント(迷ったらこれ)
最初は増やしすぎない方が管理がラクです。
- 1024px:タブレット付近
- 768px:スマホ付近
- 480px:小さめスマホ付近
@media (max-width: 768px) { }
デスクトップファーストとモバイルファースト(実務での選び方)
PC基準で作る(デスクトップファースト)
/* PC */
.cards {
display: flex;
gap: 24px;
}
/* スマホ */
@media (max-width: 768px) {
.cards {
flex-direction: column;
gap: 16px;
}
}
PCデザインが先に固まっている案件は、この形が進めやすいです。
スマホ基準で作る(モバイルファースト)
/* スマホ */
.cards {
display: block;
}
/* PC */
@media (min-width: 769px) {
.cards {
display: flex;
gap: 24px;
}
}
スマホの読みやすさを最優先にしたいときや、後から拡張しやすくしたいときに向いています。
レスポンシブ対応でよく使うCSSテクニック(この辺が効く)
画像のはみ出しを止める(横スクロール問題の常連)
img {
max-width: 100%;
height: auto;
}
これが無いと、スマホ崩れの原因になりやすいです。
レイアウトの幅を「固定しない」基本形
.container {
width: 100%;
max-width: 1200px;
margin: 0 auto;
padding: 0 24px;
}
@media (max-width: 768px) {
.container {
padding: 0 16px;
}
}
「広い画面では広がりすぎない」「狭い画面では自然に縮む」定番です。
横並びを縦並びに切り替える(スマホ崩れ対策の王道)
.row {
display: flex;
gap: 24px;
}
@media (max-width: 768px) {
.row {
flex-direction: column;
gap: 16px;
}
}
文字が小さすぎる問題を直す(やりすぎないのがコツ)
body {
font-size: 16px;
line-height: 1.7;
}
@media (max-width: 768px) {
body {
font-size: 15px;
}
}
フォントサイズを大きくしすぎるより、行間(line-height)を整える方が読みやすくなることが多いです。
余白をスマホだけ詰める(体感で効く)
.section {
padding: 56px 0;
}
@media (max-width: 768px) {
.section {
padding: 36px 0;
}
}
レスポンシブでよくある失敗と対処(現場でよく見るやつ)
スマホで横スクロールが出る
原因として多いのはこの辺です。
- 固定幅(
width: 1000pxなど) - 画像が大きい(max-width未指定)
100vwの多用- 画面外に飛ばした要素が“実体として”はみ出している
- 長い英数字やURLが折り返されない
まず事故を減らす一手がこれ。
* {
box-sizing: border-box;
}
長い文字の対策も地味に効きます。
p, a {
overflow-wrap: anywhere;
}
スマホで文字やボタンが押しづらい
- 余白が足りない
- クリック領域が小さい
a, button {
padding: 12px 14px;
}
見た目より「押せるか」で決めるのがコツです。
スマホだけレイアウトが崩れるのに原因が分からない
この場合、勘で直さない方が早いです。
DevToolsで「いま何が効いているか」を見ます。
DevToolsでレスポンシブ崩れを特定する手順(差別化ポイント)
画面幅を再現する
- F12 → Toggle device toolbar(スマホアイコン)
- iPhone等のプリセットか、幅を指定
- 崩れている状態を再現
どのCSSが効いているかを見る
- Elementsで崩れている要素を選択
- Stylesで
@media (max-width: 768px)のルールが出ているか確認 - 打ち消し線があれば、別のルールに負けている
- Computedで最終的な値を確認(誰が勝っているかが見える)
「効かない」じゃなくて「負けてる」ことが多いです。
チェックリスト|スマホ崩れを直す順番(迷ったらこれ)
- viewportは入っているか
- 画像に
max-width: 100%があるか - 固定幅(px)が原因になっていないか
- 横並び(flex/grid)をスマホで縦並びにしているか
- 余白(padding)をスマホで詰めているか
100vwや画面外に飛ばした要素で横スクロールが出ていないか- DevToolsで打ち消し線が出ていないか
上からやると、途中でだいたい当たります。
初心者におすすめの最小構成(まずはこれで十分)
* {
box-sizing: border-box;
}
img {
max-width: 100%;
height: auto;
}
.container {
width: 100%;
max-width: 1200px;
margin: 0 auto;
padding: 0 24px;
}
@media (max-width: 768px) {
.container {
padding: 0 16px;
}
.row {
flex-direction: column;
}
}
これだけでも、スマホ崩れ・横スクロール問題が出にくくなります。
よくある質問
レスポンシブ対応はSEOに影響しますか
影響します。
スマホで見づらいサイトは、ユーザーがすぐ戻ってしまいがちです。
結果として「読まれない」ページになりやすいので、検索でも不利になりやすいです。
ブレイクポイントはいくつ必要ですか
最初は1〜2個で十分です。
- 768px(スマホ)
- 必要なら1024px(タブレット)
増やすのは、運用で「ここだけどうしても」になってからで大丈夫です。
まとめ|レスポンシブは“自然に縮む設計”+“必要な所だけメディアクエリ”が強い
CSSでレスポンシブ対応するなら、押さえるのはこの流れです。
- viewportは必須
- 画像は
max-width: 100% - 固定幅を避けて自然に縮む設計に寄せる
- メディアクエリは少なめにして、必要な所だけ切り替える
- 崩れたらDevToolsで「何が効いてるか」を見る
「css レスポンシブ」で検索してきたなら、
まずは @media (max-width: 768px) から始めて、
スマホで“読める・押せる・横スクロールが出ない”状態を作るのが近道です。