【フロントエンド入門20】レスポンシブデザインの基本と実装|モバイルファーストのデザイン手法

現代のWebサイトは、スマートフォンやタブレット、PCなど、さまざまなデバイスでアクセスされます。そのため、どのデバイスでも見やすいように設計する「レスポンシブデザイン」が重要です。本記事では、初心者にもわかりやすいように、レスポンシブデザインの基本と、実際にWebページを作る手順を解説します。

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

レスポンシブデザインの概要

レスポンシブデザインは、画面の大きさに合わせてレイアウトを変える技術です。スマホで見てもPCで見ても、違和感なくコンテンツが表示されるようにします。

レスポンシブデザインのメリット

  • どのデバイスでも見やすい:スマホ、タブレット、PCのすべてで適切に表示される。
  • 検索順位に有利:Googleはモバイル対応しているサイトを高く評価します。
  • 効率的な開発と保守:1つのデザインで複数のデバイスに対応するため、管理が簡単です。

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

モバイルファーストの考え方

モバイルファーストとは、まずスマホ向けのデザインを作り、そこからタブレットやPC用にデザインを広げていく方法です。

なぜモバイルファーストが大切なのか?

  • スマホユーザーが多い:多くの人がスマホからサイトにアクセスするため、スマホに最適化するのは必須です。
  • シンプルで使いやすいデザイン:小さい画面でもわかりやすく情報を整理するので、見やすいサイトが作れます。

レスポンシブデザインの基本的な実装方法

1. ビューポートの設定

まず、デバイスの画面サイズに合わせて表示するための設定を行います。HTMLの<head>内に次のコードを入れましょう:

<meta name="viewport" content="width=device-width, initial-scale=1.0">
  • width=device-width:デバイスの幅にページの表示を合わせる。
  • initial-scale=1.0:ページを拡大しない状態で表示する。

2. メディアクエリでスタイルを変更する

画面サイズに応じて異なるデザインを適用するには、メディアクエリを使います。

基本構文

@media (条件) {
  /* スタイル */
}

例:768px以下の画面にスタイルを適用する

body {
  background-color: lightblue;
}

@media (max-width: 768px) {
  body {
    background-color: lightcoral;
  }
}
  • max-width: 768px:画面幅が768px以下の場合にスタイルを適用します。
  • 結果:PCでは青い背景、スマホでは赤い背景になります。

3. フレキシブルなグリッドレイアウトを使う

レスポンシブデザインでは、グリッドレイアウトを使って要素を柔軟に配置します。

例:2カラムレイアウト

<div class="container">
  <div class="column">左のコンテンツ</div>
  <div class="column">右のコンテンツ</div>
</div>
.container {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
}

@media (max-width: 768px) {
  .container {
    grid-template-columns: 1fr;
  }
}
  • grid-template-columns: 1fr 1fr:2つのカラムに分ける。
  • メディアクエリ:画面が768px以下の場合は1カラムにする。

4. 画像の自動調整

画像も画面サイズに合わせて自動でリサイズされるように設定します。

img {
  max-width: 100%;
  height: auto;
}
  • max-width: 100%:画像の幅を親要素の幅に合わせます。
  • height: auto:高さは幅に応じて自動調整します。

実践:レスポンシブなWebページの例

レイアウト例

以下は、モバイルファーストで設計した簡単なWebページの例です。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>レスポンシブデザインの例</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            margin: 0;
            padding: 0;
        }

        .header, .footer {
            background-color: #333;
            color: white;
            text-align: center;
            padding: 10px 0;
        }

        .main {
            display: grid;
            grid-template-columns: 1fr;
            gap: 20px;
            padding: 20px;
        }

        .box {
            background-color: lightgray;
            padding: 20px;
            text-align: center;
        }

        @media (min-width: 768px) {
            .main {
                grid-template-columns: 1fr 1fr;
            }
        }

        @media (min-width: 1024px) {
            .main {
                grid-template-columns: 1fr 1fr 1fr;
            }
        }
    </style>
</head>
<body>
    <div class="header">ヘッダー</div>
    <div class="main">
        <div class="box">コンテンツ1</div>
        <div class="box">コンテンツ2</div>
        <div class="box">コンテンツ3</div>
    </div>
    <div class="footer">フッター</div>
</body>
</html>

結論

レスポンシブデザインは、どんなデバイスからアクセスしてもユーザーが快適に情報を得られるようにする重要な技術です。モバイルファーストの設計を意識しながら、メディアクエリやグリッドレイアウトを使えば、より見やすいWebページを作成できます。