【実践ガイド】CSSメディアクエリ:@media min-width & max-width を活用したレスポンシブデザイン

2024-05-17

CSSにおける@media min-width & max-widthメディアクエリ:詳細ガイド

@media min-width & max-width は、メディアクエリと呼ばれるCSS機能の一部です。メディアクエリを使用すると、Webページのレイアウトやスタイルを、閲覧デバイスの画面サイズやその他の特性に応じて動的に変更できます。

本記事では、@media min-width & max-width の詳細な使用方法と、モバイル端末向けのデザインに役立つ実践的な例について説明します。

仕組み

@media min-width & max-width は、2つのメディアクエリを組み合わせたものです。

  • min-width: 要素の最小幅を指定します。この値よりも小さいウィンドウ幅の場合、メディアクエリ内にあるCSSルールが適用されます。

構文

@media (min-width: 480px) and (max-width: 768px) {
  /* このウィンドウ幅の場合のみ適用されるCSSルール */
}

上記の例では、ウィンドウ幅が480ピクセル以上768ピクセル以下の場合のみ、メディアクエリ内にあるCSSルールが適用されます。

例:モバイル端末向けのデザイン

例1:ナビゲーションメニューの調整

  • デスクトップでは横並びのナビゲーションメニューを、モバイル端末では縦並びのドロップダウンメニューに変更できます。
@media (min-width: 768px) {
  .nav {
    flex-direction: column; /* ナビゲーション項目を縦並びに */
  }
  .nav-item {
    display: block; /* 各ナビゲーション項目をブロック要素に */
    margin-bottom: 10px; /* 各項目間に余白を追加 */
  }
}

例2:画像のサイズ調整

  • デスクトップでは高解像度の画像を表示し、モバイル端末では低解像度の画像に差し替えることができます。
@media (max-width: 768px) {
  img {
    max-width: 100%; /* 画像を親要素の幅に収まるように調整 */
    height: auto; /* 高さを自動調整 */
  }
}

例3:フォントサイズの変更

  • デスクトップよりもモバイル端末でフォントサイズを大きく表示できます。
@media (min-width: 320px) and (max-width: 768px) {
  body {
    font-size: 16px; /* モバイル端末でのフォントサイズ */
  }
}

補足

  • 上記はほんの一例です。@media min-width & max-width を活用することで、様々なデバイス向けのデザインを構築できます。

@media min-width & max-width は、モバイル端末を含む様々なデバイス向けのレスポンシブなWebデザインを構築する際に役立つ強力なツールです。上記の例を参考に、ぜひ実践してみてください。




サンプルコード:メディアクエリを使用したレスポンシブデザイン

例1:カラムレイアウトの調整

この例では、3カラムレイアウトを、画面サイズに応じて2カラムまたは1カラムレイアウトに調整する方法を示します。

/* デフォルトスタイル(幅広い画面向け) */
.container {
  display: flex;
  flex-wrap: wrap;
}

.column {
  flex: 1 0 33.3%; /* 各カラムの幅を33.3%に設定 */
  padding: 10px;
}

/* タブレット端末向け(768px以下) */
@media (max-width: 768px) {
  .container {
    flex-direction: column; /* カラムを縦並びに */
  }

  .column {
    flex: 1 0 50%; /* 各カラムの幅を50%に設定 */
  }
}

/* スマートフォン向け(480px以下) */
@media (max-width: 480px) {
  .container {
    flex-direction: column; /* カラムを縦並びに */
  }

  .column {
    flex: 1 0 100%; /* 各カラムを100%幅に */
  }
}

例2:画像の代替テキスト

この例では、画面サイズに応じて画像の代替テキストを切り替える方法を示します。

img {
  alt: "画像の説明"; /* デフォルトの代替テキスト */
}

/* デスクトップ向け(768px以上) */
@media (min-width: 768px) {
  img {
    alt: "画像の詳細な説明"; /* 詳細な説明をデスクトップに表示 */
  }
}
body {
  font-size: 16px; /* デフォルトのフォントサイズ */
}

/* タブレット端末向け(768px以下) */
@media (max-width: 768px) {
  body {
    font-size: 14px; /* タブレット端末ではフォントサイズを小さく */
  }
}

/* スマートフォン向け(480px以下) */
@media (max-width: 480px) {
  body {
    font-size: 12px; /* スマートフォンではさらに小さく */
  }
}

    これらのサンプルコードを活用して、様々な画面サイズでユーザーにとって快適なWebページを作成してください。




    @media min-width & max-width 以外の方法

    メディアクエリの種類

    • @media only screen and (min-width: 768px):768ピクセル以上の画面サイズでのみCSSルールを適用します。
    • @media (orientation: portrait):縦向きの画面の場合のみCSSルールを適用します。

    これらのメディアクエリを組み合わせて、より複雑な条件を設定することもできます。

    FlexboxとGridレイアウトは、レスポンシブなレイアウトを構築するためのレイアウトモードです。これらのモードを使用すると、要素を柔軟に配置し、画面サイズに合わせて自動的に調整することができます。

    レスポンシブな画像

    srcset 属性とsizes 属性を使用すると、画面サイズに応じて適切なサイズの画像を自動的に読み込むことができます。

    レスポンシブなタイポグラフィ

    相対的な単位(emやremなど)を使用すると、フォントサイズを画面サイズに合わせて自動的に調整することができます。

    viewport メタタグを使用すると、ブラウザにどのようにページをレンダリングするかを指示することができます。例えば、以下のメタタグは、モバイル端末でページの幅を画面幅に設定するように指示します。

    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    

    @media min-width & max-width は、レスポンシブなWebデザインを作成するための強力なツールですが、唯一の方法ではありません。上記の様々な方法を組み合わせて、様々なデバイスで良好なユーザー体験を提供するWebページを作成することができます。

    適切な方法を選択するには、ターゲットとするデバイスと、達成したいデザインを考慮する必要があります。


    css mobile media-queries


    HTMLとCSSでWebページをもっと自由に!要素の幅設定テクニック集

    このプロパティは、要素の幅を親要素の幅の100%から100ピクセル引いた値に設定します。つまり、親要素の幅が常に100%になるように、要素の幅が自動的に調整されるのです。以下の例のように、width プロパティに calc(100% - 100px) を指定します。...


    【現場で使える】HTML入力欄を編集不可にする2つの方法と応用例

    方法1: disabled 属性を使うこれは、HTML入力要素に disabled 属性を追加する最も簡単で一般的な方法です。この属性を追加すると、入力欄がグレーアウトされ、ユーザーがクリックしたり入力したりできなくなります。方法2: readonly 属性を使う...


    CSS background-sizeとbackground-positionで背景画像を幅に合わせ、高さを自動調整する

    HTMLとCSSを使用して、背景画像を要素の幅に合わせ、高さは元の縦横比を維持しながら自動調整する方法を解説します。方法以下の2つの方法があります。background-size プロパティを使用するこの方法は、背景画像のサイズを直接指定する方法です。...


    初心者でも安心!Bootstrap 3 モーダルを垂直方向に中央に配置する3つの方法

    方法 1: CSS を使用する.modal-dialog クラスに以下の CSS を追加します。この CSS は、.modal-dialog 要素を絶対配置し、ウィンドウの垂直方向と水平方向の中心から 50% の位置に配置します。 transform: translate(-50%, -50%) プロパティは、要素をその元の位置から 50% だけ左上に移動することで、中央配置を達成します。...


    React インラインスタイルで発生する「style prop expects a mapping from style properties to values, not a string」エラーの原因と解決策

    Reactでコンポーネントスタイルを定義する場合、主に2つの方法があります。CSSファイル: コンポーネント専用のCSSファイルを作成し、classNameプロパティを使ってスタイルを適用する方法。インラインスタイル: styleプロパティを直接コンポーネントに記述する方法。...