レスポンシブデザインを作る方法:CSSメディアクエリの使い方入門

レスポンシブデザインを作る方法:CSSメディアクエリの使い方入門
目次

はじめに

近年、多様なデバイスでウェブサイトが閲覧されることが増え、レスポンシブデザインはウェブ開発の重要なスキルとなりました。レスポンシブデザインでは、画面の幅に応じてレイアウトやスタイルが動的に変化するサイトを作成できます。今回は、その基本であるCSSメディアクエリの使い方を紹介し、レスポンシブデザインの作り方を学びましょう。

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

レスポンシブデザインは、デバイスの画面サイズや解像度に応じて、自動的にページのレイアウトやデザインを調整する技術です。PC、タブレット、スマートフォンなど、さまざまな端末に対応するウェブサイトが求められる現代では、レスポンシブデザインが標準となっています。

メリット

  • 柔軟性:さまざまなデバイスに対応する一つのコードで作成可能
  • ユーザー体験の向上:どのデバイスでも見やすく、使いやすいページを提供
  • SEO効果:モバイル対応は検索エンジンのランキングにも好影響

メディアクエリとは?

**メディアクエリ(Media Queries)**は、CSSで条件に応じたスタイルを適用するための方法です。特定の画面サイズやデバイスに基づいて、CSSを動的に切り替えることができるため、レスポンシブデザインを実現するための基本となる技術です。

メディアクエリの基本的な書き方

以下は、メディアクエリの基本的な構文です。@mediaルールを使って、特定の条件に対して異なるスタイルを適用できます。

CSS
@media (条件) {
  /* 条件に該当する場合に適用されるスタイル */
}

例えば、画面幅が768px以下の場合に適用されるスタイルは以下のように記述します。

CSS
@media (max-width: 768px) {
  body {
    background-color: lightblue;
  }
}

この例では、画面幅が768px以下のデバイスでは、ページの背景色がライトブルーに変更されます。

メディアクエリの具体例

次に、メディアクエリを使った実際のレスポンシブデザインの例を見ていきましょう。

1. レスポンシブナビゲーションメニュー

PCでは横並びのナビゲーションメニュー、スマートフォンでは縦並びに変化する例です。

HTML
<!DOCTYPE html>
<html lang="ja">
<head>
  <style>
    /* 基本スタイル */
    nav ul {
      list-style-type: none;
      padding: 0;
    }
    nav ul li {
      display: inline-block;
      margin-right: 20px;
    }

    /* スマートフォン用のスタイル */
    @media (max-width: 600px) {
      nav ul li {
        display: block;
        margin: 10px 0;
      }
    }
  </style>
</head>
<body>
  <nav>
    <ul>
      <li><a href="#">Home</a></li>
      <li><a href="#">About</a></li>
      <li><a href="#">Services</a></li>
      <li><a href="#">Contact</a></li>
    </ul>
  </nav>
</body>
</html>

この例では、画面幅が600pxを超えるデバイスでは、メニューが横並びになります。一方、600px以下のデバイスでは縦並びに変わり、スマートフォンでの閲覧に最適化されています。

2. レスポンシブな2カラムレイアウト

PCでは2カラムのレイアウト、スマートフォンでは1カラムになる例です。

HTML
<!DOCTYPE html>
<html lang="ja">
<head>
  <style>
    .container {
      display: flex;
    }
    .main {
      flex: 2;
    }
    .sidebar {
      flex: 1;
    }

    /* スマートフォン用のスタイル */
    @media (max-width: 768px) {
      .container {
        display: block;
      }
    }
  </style>
</head>
<body>
  <div class="container">
    <div class="main">Main Content</div>
    <div class="sidebar">Sidebar</div>
  </div>
</body>
</html>

この例では、768px以上のデバイスでは2カラムレイアウトが表示されますが、768px以下になると、カラムが縦に並ぶ1カラムレイアウトに変化します。

よく使うメディアクエリのパターン

メディアクエリを使ったレスポンシブデザインでは、さまざまな条件を指定することができます。以下は、よく使われるパターンです。

1. 最小幅(min-width)

CSS
@media (min-width: 1024px) {
  /* 1024px以上の画面に適用されるスタイル */
}

このクエリは、画面の幅が1024px以上のデバイスにスタイルを適用します。デスクトップなどの大きな画面に適用する場合に便利です。

2. 最大幅(max-width)

CSS
@media (max-width: 768px) {
  /* 768px以下の画面に適用されるスタイル */
}

このクエリは、スマートフォンやタブレットなど、幅が狭いデバイスにスタイルを適用する際によく使います。

3. 複数の条件を組み合わせる

CSS
@media (min-width: 600px) and (max-width: 1200px) {
  /* 600pxから1200pxの間の画面幅に適用されるスタイル */
}

このクエリは、画面幅が600pxから1200pxの範囲内にあるデバイスにスタイルを適用します。タブレットや小型ノートPC向けに最適化する場合に役立ちます。

レスポンシブデザインのベストプラクティス

レスポンシブデザインを作成する際に押さえておくべきポイントをいくつか紹介します。

1. モバイルファースト

最近のレスポンシブデザインでは、モバイルファーストの考え方が主流です。これは、最初にモバイル用のスタイルを作成し、その後に大きな画面用のスタイルを追加するアプローチです。これにより、スマートフォンでの表示が最適化され、パフォーマンスも向上します。

CSS
/* モバイル用のスタイル */
body {
  font-size: 14px;
}

/* PC用のスタイル */
@media (min-width: 1024px) {
  body {
    font-size: 18px;
  }
}

2. フレキシブルなレイアウトを心がける

固定幅のレイアウトではなく、%fr単位、minmax()関数などを活用して、画面サイズに応じた柔軟なレイアウトを作成しましょう。

CSS
.container {
  display: grid;
  grid-template-columns: 1fr 2fr;
  grid-gap: 10px;
}

3. パフォーマンスに配慮する

レスポンシブデザインでは、画像やフォントなどもデバイスに応じたサイズに調整することで、読み込み時間を短縮し、ユーザーエクスペリエンスを向上させることが重要です。srcset属性を使って、異なるデバイス向けに適した画像を提供する方法もあります。

HTML
<img src="small.jpg" srcset="large.jpg 1024w, medium.jpg 768w" alt="Responsive Image">

まとめ

レスポンシブデザインは、さまざまなデバイスに対応するために不可欠な技術です。CSSのメディアクエリを使えば、画面サイズやデバイスの種類に応じたデザインを簡単に実現できます。今回紹介したメディアクエリの基本や具体例を活用して、ユーザーにとって使いやすいウェブサイトを作成しましょう。


この記事では、CSSメディアクエリの基本的な使い方から、実際にレスポンシブデザインを作る際のポイントを解説しました。これを参考に、実際のプロジェクトに取り入れてみてください!

この記事を書いた人

目次