【6日でできるHTML&CSS入門】Webレイアウトをレスポンシブ対応にする

 これまでにWebページの基本構造やレスポンシブWebデザインの考え方について学んできました。ここでは、「Webレイアウトをレスポンシブ対応にする」ための具体的な方法を解説します。
 レスポンシブ対応とは、パソコン・スマートフォンなどさまざまな画面幅に応じてWebページのデザインやレイアウトを自動的に調整することを意味します。CSSの「メディアクエリ」を活用することで、同じHTMLでも異なるデバイスで最適な表示ができるようになります。
今回は、シンプルなレイアウトサンプルをもとに、パソコン用とスマートフォン用のスタイルを切り替える仕組みや実装方法を解説します。

1.レスポンシブWebデザインの導入

1.1. レスポンシブ化の目的と必要性

 Webサイトの利用環境は年々多様化しています。パソコンだけでなく、スマートフォンやタブレットなど、画面サイズの異なる複数のデバイスからアクセスされます。それぞれの端末で適切に情報が見えるようにするため、レイアウトを柔軟に調整できるレスポンシブ対応が不可欠です。

デバイス画面サイズ例レイアウト調整例
パソコン1200px以上横並びメニュー、2カラム表示
タブレット600~1024pxメニューの幅縮小、1カラム化
スマートフォン~600px縦並びメニュー、全幅1カラム表示

1.2. レスポンシブ化の主な方法

  • ビューポート(viewport)設定
    モバイル端末で画面幅に合わせて拡大縮小されるよう、<meta name="viewport" ...>タグを設定します。
  • メディアクエリの利用
    CSSの@mediaルールを使い、画面サイズごとに異なるスタイルを適用します。

2.レスポンシブ対応への実装手順

2.1. HTMLの準備

 従来のHTMLから大きな変更は必要ありませんが、スタイルシートの切り替えクラス名の整理を行います。

サンプルHTML(例)

ファイル名: lesson40_1.html

<!DOCTYPE html>
<html lang="ja">
<head>
  <title>HPレイアウトサンプル2</title>
  <meta charset="UTF-8">
  <link rel="stylesheet" href="style_responsive.css">
</head>
<body>
  <header id="header">
    <h1>Can be done in 6 days</h1>
    <nav id="menu">
      <ul>
        <li><a href="#">メニューA</a></li>
        <li><a href="#">メニューB</a></li>
        <li><a href="#">メニューC</a></li>
        <li><a href="#">メニューD</a></li>
      </ul>
    </nav>
  </header>
  <main>
    <div id="contents">
      <aside>
        <section>
          <h2>補足情報</h2>
        </section>
      </aside>
      <article>
        <section>
          <h3>2025.06.21</h3>
          <p>新着のお知らせ</p>
        </section>
      </article>
    </div>
  </main>
  <footer id="footer">
    <small>(c) サンプル株式会社</small>
  </footer>
</body>
</html>

使用タグ一覧

タグ用途
<header>サイトのヘッダー
<nav>ナビゲーション
<ul>メニューリスト
<li>メニューアイテム
<main>メインコンテンツ
<section>セクション区切り
<footer>サイトのフッター

2.2. CSSのレスポンシブ化

ポイント

  • パソコン用とスマートフォン用でメニューのレイアウトを切り替える
  • 画面幅が800px未満の場合は、メニューを縦並び&ボタン風にする

サンプルCSS

ファイル名: style_responsive.css

body {
  margin: 0;
  font-family: sans-serif;
}
header {
  background: #2737cf;
  color: #fff;
  text-align: center;
  padding: 1em 0;
}
header h1 { margin: 0; }

#menu ul {
  margin: 0 auto;
  padding: 0;
  list-style: none;
  max-width: 800px;
  display: flex;
  justify-content: center;
  gap: 16px;
}
#menu ul li a {
  display: block;
  color: #fff;
  background: #384fff;
  border-radius: 8px;
  padding: 1em 0.5em;
  font-weight: bold;
  font-size: 1.1em;
  text-decoration: none;
  transition: background 0.2s;
}
#menu ul li a:hover {
  background: #19258a;
  color: #fffd85;
}

/* スマートフォン対応 */
@media screen and (max-width: 800px) {
  #menu ul {
    flex-direction: column;
    gap: 8px;
    padding: 0 10px;
  }
  #menu ul li a {
    font-size: 1.1em;
    padding: 1em;
    background: #2737cf;
    border-radius: 10px;
  }
}
main {
  max-width: 800px;
  margin: 2em auto;
  padding: 0 10px;
}
footer {
  background: #222;
  color: #fff;
  text-align: center;
  padding: 1em 0;
  font-size: 0.95em;
}

表示結果

パソコン用

スマートフォン用

表:CSSプロパティの解説

プロパティ意味・効果
display: flex横並び/縦並びの切り替えに便利
gapメニュー間の余白設定
border-radiusボタン角丸設定
@media (max-width)画面幅で切り替え可能。スマホで縦並び・大きなボタン化
paddingメニューや余白の確保
font-size/weight読みやすい大きめ文字、強調

3.より実践的なレスポンシブレイアウト

3.1. レイアウト崩れ対策とデザインの工夫

  • メニューや見出しなど主要パーツはFlexboxやGridで配置調整
  • 本文やボタン類は文字サイズ・余白に注意してタップしやすく
  • メディアクエリを複数段階で設定し、タブレット・大画面スマホにも最適化

まとめ

レスポンシブ対応は、1つのHTMLに対してCSSでスタイルを切り替えるだけで実現できるのが特徴です。
本記事で紹介したポイントとサンプルを活用することで、PC・スマホどちらでも快適なWebレイアウトが作成できます。