CSSでスマホ・タブレット向けデザインを簡単作成!メディアクエリの使い方とサンプルコード

2024-05-23

CSSにおける「@media screen and (max-width: 1024px)」の意味と使い方

このメディアクエリの場合、以下の意味になります。

  • @media screen: 画面表示用のスタイルを定義します。印刷用やスクリーンリーダー用のスタイルとは区別されます。
  • and (max-width: 1024px): 画面幅が 1024px以下 の場合に、以下のスタイルを適用します。

つまり、このメディアクエリは、画面幅が1024px以下のデバイス(スマートフォンやタブレットなど)で閲覧されている場合にのみ、以下のスタイルを適用することを意味します。

例:

/* 通常のスタイル */
body {
  font-size: 16px;
  line-height: 1.5;
}

/* 画面幅が1024px以下の場合のスタイル */
@media screen and (max-width: 1024px) {
  body {
    font-size: 14px;
    line-height: 1.4;
  }
}

上記の場合、画面幅が1024px以上のデバイスでは、body 要素のフォントサイズは16px、行高は1.5になりますが、画面幅が1024px以下のデバイスでは、フォントサイズは14px、行高は1.4になります。

メディアクエリは、Webページを様々なデバイスで閲覧できるようにするために非常に重要な機能です。 上記の例のように、画面サイズに合わせてフォントサイズや行高を変更したり、画像のサイズを変更したり、レイアウトを調整したりすることができます。

メディアクエリは、以下の構文で記述します。

@media mediatype and (mediafeature) {
  CSS-code;
}
  • mediatype: メディアタイプを指定します。screen は画面表示用、print は印刷用、speech はスクリーンリーダー用などを指定します。
  • mediafeature: メディア機能を指定します。max-widthmin-widthorientationresolution などがあります。
  • CSS-code: メディアクエリが適用される場合に適用されるCSSコードを記述します。



HTML

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>メディアクエリサンプル</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>
  <h1>見出し</h1>
  <p>本文</p>
  <img src="image.jpg" alt="画像">
</body>
</html>

CSS

/* 通常のスタイル */
body {
  font-family: Arial, sans-serif;
  margin: 0;
  padding: 20px;
}

h1 {
  font-size: 24px;
  margin-bottom: 20px;
}

p {
  font-size: 16px;
  line-height: 1.5;
}

img {
  max-width: 100%;
  height: auto;
}

/* 画面幅が1024px以下の場合のスタイル */
@media screen and (max-width: 1024px) {
  body {
    font-size: 14px;
  }

  h1 {
    font-size: 20px;
  }

  p {
    font-size: 14px;
  }

  img {
    max-width: 80%;
  }
}

このコードでは、以下のことが行われています。

  • 通常スタイル:
    • フォントファミリーを Arial または等幅フォントに設定します。
    • ボディの余白とパディングを設定します。
    • 見出し(h1)のフォントサイズを24pxに設定します。
    • 本文(p)のフォントサイズを16px、行高を1.5に設定します。
    • 画像(img)の最大幅を100%、高さを自動に設定します。
  • 画面幅が1024px以下の場合のスタイル:
    • 画像の最大幅を80%に設定します。

このコードを実行すると、画面幅が1024px以上のデバイスでは、通常のスタイルが適用されます。一方、画面幅が1024px以下のデバイスでは、メディアクエリで定義されたスタイルが適用されます。




メディアクエリ以外にも、画面サイズや解像度に応じてWebページのデザインを変更する方法はいくつかあります。

BootstrapやFoundationなどのCSSフレームワークには、メディアクエリを含むレスポンシブデザイン用のツールが組み込まれています。これらのフレームワークを使用すると、メディアクエリを記述することなく、簡単にレスポンシブなWebページを作成することができます。

JavaScriptを使用して、画面サイズや解像度を検出し、それに応じてスタイルを動的に変更することもできます。ただし、この方法には、メディアクエリを使用するよりも複雑なコーディングが必要となります。

サーバーサイドスクリプティングを使用して、ユーザーエージェント情報に基づいて異なるスタイルシートを配信することもできます。ただし、この方法には、サーバー側で追加の処理が必要となります。

それぞれの方法には長所と短所があるため、要件に応じて最適な方法を選択する必要があります。

以下に、各方法の詳細と、それぞれを使用する利点と欠点の要約を示します。

**方法説明利点欠点**
メディアクエリCSS内にメディアクエリを記述して、画面サイズや解像度に応じてスタイルを適用します。シンプルで使いやすい複雑なレイアウトには不向き
CSSフレームワークBootstrapやFoundationなどのCSSフレームワークを使用すると、メディアクエリを含むレスポンシブデザイン用のツールが組み込まれています。簡単で迅速にレスポンシブなWebページを作成できるフレームワークに依存する必要がある
JavaScriptJavaScriptを使用して、画面サイズや解像度を検出し、それに応じてスタイルを動的に変更します。柔軟性が高い複雑なコーディングが必要
サーバーサイドスクリプティングサーバーサイドスクリプティングを使用して、ユーザーエージェント情報に基づいて異なるスタイルシートを配信します。すべてのデバイスでユーザーエージェント情報が正確であるとは限らないサーバー側で追加の処理が必要

メディアクエリは、画面サイズや解像度に応じてWebページのデザインを簡単に変更できる強力なツールです。ただし、複雑なレイアウトには不向きな場合があります。そのような場合は、CSSフレームワーク、JavaScript、またはサーバーサイドスクリプティングなどの他の方法を検討する必要があります。


    css media-queries


    HTML/CSSで実現!iOSアプリの無効な入力テキストのカラーカスタマイズ

    iOSアプリ開発において、テキストフィールドやテキストビューなどの入力フィールドは無効化(disabled)することがあります。無効化されたフィールドは、ユーザーが編集できない状態になり、通常はグレーなどの薄い色で表示されます。このページでは、HTML、CSSを用いて、iOSにおける無効な入力テキストの色を変更する方法について解説します。...


    CSSでテーブルセル列の改行を防止する2つの方法

    解決策主に以下の2つの方法があります。white-space: nowrap; プロパティを使用する最も簡単な方法は、white-space: nowrap; プロパティをCSSで設定することです。これは、セル内の空白文字(スペース、タブ、改行など)を非伸縮性として扱い、セル幅を超えても改行しないようにします。...


    【CSS】文字の背景のみ透過する方法/opacityとrgba()の使い分け

    CSSで要素の背景色のみを透過させ、テキストは不透明なまま表示したい場合、いくつかの方法があります。方法opacity プロパティは、要素全体の不透明度を調整します。ただし、この方法ではテキストも透過してしまうため、テキストのみ不透明にするためには別の方法が必要です。...


    「screen」と「only screen」の違い

    screenscreenは、幅広い画面デバイスを対象としたメディアタイプです。具体的には、以下のようなデバイスが含まれます。デスクトップパソコンノートパソコンタブレットスマートフォン違いscreenとonly screenの主な違いは、プリンターなどの非画面デバイスを除外するかどうかです。...


    viewport-unitsで古いブラウザも安心!レスポンシブフォントサイズ

    ここでは、CSSでレスポンシブなフォントサイズを設定する3つの方法をご紹介します。相対単位は、親要素のフォントサイズを基準にフォントサイズを指定します。例えば、em や rem を使うことで、画面サイズに合わせてフォントサイズが自動的に調整されます。...