【初心者向け】レスポンシブデザインの基本とは?CSSとメディアクエリでスマホ対応する方法を解説

HTML/CSS入門

1.レスポンシブデザインとは?

レスポンシブデザインとは、ユーザーが使用しているデバイス(スマートフォン、タブレット、PCなど)の画面サイズに応じて表示を最適化するWebデザイン手法のことです。

現在では、Webサイトの訪問者の多くがスマホを使っており、PCだけに最適化されたレイアウトでは離脱の原因になります。そこで、画面の幅に応じてレイアウトや文字サイズを変えるレスポンシブ対応が不可欠となっています。

モバイルファーストとは?

近年では「モバイルファースト」という考え方が主流です。これは、

  • 最初にスマホ向けのスタイルを設計
  • その後、画面が広いデバイス(タブレット・PC)に向けて上書きのスタイル(メディアクエリ)を追加

という順序でスタイルを書く方法です。

このようにすることで、無駄なスタイルの上書きを減らし、読み込みも効率的になります。

2.メディアクエリの基本書式

レスポンシブデザインの中核となるのが、CSSの@mediaルールです。
これは特定の条件(例:画面の幅が768px以下)でだけCSSを適用したい場合に使います。

基本構文

@media (max-width: 768px) {
  /* 768px以下のときだけ適用されるスタイル */
  body {
    background-color: lightgray;
  }
}

このように書くことで、スマホやタブレットで閲覧しているときだけ特定のスタイルを適用できます。

よく使う「ブレイクポイント」

ブレイクポイントとは、「画面幅が変化するタイミング」を意味します。
よく使われる目安は次のとおり:

ブレイクポイント対象デバイス
~480pxスマートフォン(縦)
~768pxタブレット
~1024px小さめのノートPC
~1200px以上デスクトップPC

モバイルファーストの書き方例

/* デフォルトはスマホ向け(モバイルファースト) */
.container {
  font-size: 14px;
  padding: 10px;
}

/* タブレット以上の画面サイズにだけ適用 */
@media (min-width: 768px) {
  .container {
    font-size: 16px;
    padding: 20px;
  }
}

このように書くことで、スマホ→タブレット→PCへと拡張していくスタイル設計ができます。

3.よく使うレスポンシブのパターン

レスポンシブデザインでは、画面サイズに応じて見た目の構造を切り替えるのがよくあるパターンです。ここでは実際によく使われる2つの例を紹介します。

パターン①:1カラム→2カラム(またはその逆)

ブログのレイアウトやカード表示でよく使われるのが、小さい画面では縦並び、大きな画面では横並びに切り替えるレイアウトです。

実例コード:

<div class="container">
  <div class="box">Box1</div>
  <div class="box">Box2</div>
</div>
.container {
  display: flex;
  flex-direction: column; /* モバイル向け:縦並び */
  gap: 16px;
}

@media (min-width: 768px) {
  .container {
    flex-direction: row; /* タブレット以上:横並び */
  }
}
.box {
  flex: 1;
  padding: 20px;
  background: #f0f0f0;
  text-align: center;
}

パターン②:ナビゲーションの表示切り替え(ハンバーガー対応など)

スマホではメニューを非表示 or アイコンにし、タブレットやPCでは常に表示する形です。

<nav class="nav">MENU</nav>
.nav {
  display: none; /* スマホでは非表示 */
}

@media (min-width: 768px) {
  .nav {
    display: block; /* タブレット以上では表示 */
  }
}

JavaScriptでハンバーガーメニューを切り替える構成にも応用できます。


これらのパターンを組み合わせることで、柔軟で実用的なレスポンシブデザインを作ることができます。

4.FlexboxやGridとの連携

Flexbox(フレックスボックス)やCSS Gridは、レスポンシブデザインとの相性が抜群なレイアウト手法です。

これらをメディアクエリと組み合わせることで、画面サイズに応じた柔軟なデザイン変更が簡単に実現できます。

Flexboxとの連携例

レイアウトを縦並び⇄横並びで切り替え

<div class="flex-container">
  <div class="item">Item 1</div>
  <div class="item">Item 2</div>
</div>
.flex-container {
  display: flex;
  flex-direction: column; /* スマホでは縦並び */
  gap: 10px;
}

@media (min-width: 768px) {
  .flex-container {
    flex-direction: row; /* タブレット以上では横並び */
  }
}
.item {
  flex: 1;
  background: #ddd;
  padding: 20px;
  text-align: center;
}

Gridとの連携例

列数を切り替えるレイアウト(カード表示など)

<div class="grid-container">
  <div class="card">Card 1</div>
  <div class="card">Card 2</div>
  <div class="card">Card 3</div>
</div>
.grid-container {
  display: grid;
  grid-template-columns: 1fr; /* スマホ:1列 */
  gap: 16px;
}

@media (min-width: 768px) {
  .grid-container {
    grid-template-columns: repeat(2, 1fr); /* タブレット:2列 */
  }
}

@media (min-width: 1024px) {
  .grid-container {
    grid-template-columns: repeat(3, 1fr); /* PC:3列 */
  }
}
.card {
  background: #f9f9f9;
  padding: 20px;
  border: 1px solid #ccc;
}

このように、「ベースはシンプル」「画面が広くなるほどレイアウトを拡張」という考え方が、FlexやGridとメディアクエリの組み合わせではとても効果的です。

5.実践ミニコード:プロフィールカードをレスポンシブ化

ここでは、これまで学んだFlexbox+メディアクエリを使って、シンプルなプロフィールカードをレスポンシブ対応にしてみましょう。

<div class="profile-card">
  <img src="https://via.placeholder.com/100" alt="プロフィール画像">
  <div class="profile-info">
    <h2>山田 太郎</h2>
    <p>フロントエンドエンジニア。JavaScriptとコーヒーが好き。</p>
  </div>
</div>
.profile-card {
  display: flex;
  flex-direction: column; /* スマホでは縦並び */
  align-items: center;
  border: 1px solid #ccc;
  border-radius: 8px;
  padding: 16px;
  max-width: 600px;
  margin: auto;
  background-color: #fdfdfd;
}

.profile-card img {
  width: 100px;
  height: 100px;
  border-radius: 50%;
  margin-bottom: 12px;
}

.profile-info h2 {
  margin: 0;
  font-size: 20px;
}

.profile-info p {
  font-size: 14px;
  color: #555;
  text-align: center;
}

/* タブレット以上で横並びに切り替え */
@media (min-width: 768px) {
  .profile-card {
    flex-direction: row;
    align-items: center;
    gap: 20px;
  }

  .profile-info p {
    text-align: left;
  }
}

表示イメージ

プロフィール画像

山田 太郎

フロントエンドエンジニア。JavaScriptとコーヒーが好き。

  • スマホ:縦に画像→テキスト
  • タブレット以上:画像とテキストが横並び

このように、小さなパーツからでもレスポンシブデザインの実装は簡単に始められます。実際のWebページでも、プロフィールやカード型UIなどで頻繁に活用されます。

6.まとめ:レスポンシブデザインは“今や常識”

本記事では、レスポンシブデザインの基本と実践方法を紹介してきました。

  • レスポンシブデザインは、スマホ・タブレット・PCなど、あらゆる画面サイズに対応するための手法
  • モバイルファースト設計で、スマホ→PCの順にスタイルを追加していく
  • **メディアクエリ(@media)**を使って画面サイズに応じたスタイル切り替えが可能
  • Flexbox や Gridと併用すると、レイアウトの可変性が大きく広がる
  • 実際にプロフィールカードのようなUIにも簡単に応用できる

スマホユーザーが主流となった今、レスポンシブ対応は見た目の美しさだけでなく、SEOやユーザビリティ向上にも不可欠です。

まずは小さなレイアウトから試して、少しずつ取り入れていきましょう!


HTML,CSSを学ぶ方々におすすめの書籍です。

僕自身、様々なプログラミングの本を購入しましたが、こちらの[HTML&CSSとWebデザインが1冊できちんと身につく本]が一番わかりやすく、一冊で基本を一通り学べる内容になっています。


HTML&CSSとWebデザインが1冊できちんと身につく本[増補改訂版] [ 服部雄樹 ]

コメント

タイトルとURLをコピーしました