【CSS】ウィンドウ幅に応じて表示を変える方法(メディアクエリ)

@media (min-width: ){}を用いたレスポンシブデザインのコードを紹介します。
スマホ・タブレット・PCの3つを想定し、それぞれで表示される内容やレイアウトを変えられます。

目次

実装例とコード公開(3つ)

スマホで見ている人は、PCやタブレットでも見てみてください。(スマホの向きを変えても見れるかも。)
PCで見ている人は、ウィンドウサイズを狭くしたり広くしたりしてみてください。

画面サイズで、フォントサイズとカラーが変わります!
(下記テーブル参照)

画面サイズフォントサイズ文字色
768px未満16px
768px以上、1280px未満20px
1280px以上24px
HTML/CSS コードはこちら
<p>画面の大きさでフォントサイズとカラーが変わります!</p>
p {
  font-size: 16px;
  color: red;
  text-align: center;
}

/* 画面幅が768px以上のときのスタイル(タブレット以上のサイズ向け) */
@media (min-width: 768px) {
  p {
    font-size: 20px;
    color: blue;
  }
}

/* 画面幅が1280px以上のときのスタイル(デスクトップ向け) */
@media (min-width: 1280px) {
  p {
    font-size: 24px;
    color: black;
  }
}
  • CSSは後から書いたものが優先される(スタイルが上書きされる)ことを利用し、ブラウザ幅の条件を小さい順に書くことで実装できる。(このようなメディアクエリを「モバイルファースト」とも呼ぶ。)

メディアクエリの基本的な使い方

CSSのメディアクエリ@media (min-width: ){}@media (max-width: ){}を使うことで、ウィンドウサイズが指定した幅以上または幅以下になったとき、{}で囲われたスタイルを適用させることができます。

例として、画面サイズに応じてdiv要素のサイズや背景色を変更するコードは以下のとおりです。

min-width の例(画面サイズが指定px “以上” でスタイルが変化)
〜 799px

「幅100px ✕ 高さ100px」「背景が赤」のdiv要素

800px 〜

「幅200px ✕ 高さ200px」「背景が青」のdiv要素

/* min-width の例 */
div {
  width: 100px;
  height: 100px;
  background-color: red;
}

@media (min-width: 800px) {
  div {
    width: 200px;
    height: 200px;
    background-color: blue;
  }
}
max-width の例(画面サイズが指定px “以下” でスタイルが変化)
801px 〜

「幅100px ✕ 高さ100px」「背景が赤」のdiv要素

〜 800px

「幅200px ✕ 高さ200px」「背景が青」のdiv要素

/* max-width の例 */
div {
  width: 100px;
  height: 100px;
  background-color: red;
}

@media (max-width: 800px) {
  div {
    width: 200px;
    height: 200px;
    background-color: blue;
  }
}

この例での切り替わりポイントは一つ(800px)だけですが、複数のポイントを作ることも可能です。
本記事の実装例のように、スマホ/タブレット/PCの3つのデバイスに対応しておくのがベストでしょう。

「min-width」と「max-width」の使い分け

迷ったら、モバイルファーストデザインとなるmin-widthを使いましょう!

min-width → モバイルファーストデザイン

近年のWebデザインは、モバイルファーストと呼ばれるアプローチがよく採用されています。
デフォルトのスタイルをモバイル(スマホ)向けに設計し、min-width を使用して画面サイズが大きくなるにつれてスタイルを追加または変更します。

現在は多くのユーザーがスマホでWebサイトを閲覧するため、基本的にこちらを採用するのがオススメです。

max-width → デスクトップファーストデザイン

モバイルファーストと逆のアプローチです。
デフォルトのスタイルをデスクトップ(PC)向けに設計し、max-width を使用して画面サイズが小さくなるにつれてスタイルを追加または変更します。

ブレイクポイントはいくつに設定すべきか?

代表的なデバイスであるPC・タブレット・スマホの3つを想定し、以下の通り設定しました。

スマホ想定

768px未満

タブレット想定

768〜1280px未満

PC想定

1280px以上

ブレイクポイントは こちらのサイトを参考にしました。これらのブレイクポイントに注意してデザイン設計すると、ほぼ全てのデバイスに対応できそうです。(2024年10月)

【応用】ヘッダー(ハンバーガーメニュー)を作る

メディアクエリを使えば、以下のようなヘッダーを作ることもできます。

実装例】

画面幅を800px以下にすると、ハンバーガーメニュー(三本線アイコン)が表示されます。

詳細は以下記事で解説していますので、実装してみたい方は合わせてご覧ください。

まとめ

以上、CSSのメディアクエリという記法を用い、ウィンドウ幅に応じてデザインを変える方法(レスポンシブウェブデザイン)を紹介しました。

デバイスが多様化する中、それぞれのサイズに応じてレイアウトを考えるのは正直面倒ではあるのですが、表示が崩れているとどうしてもそのサイトの信用度が下がってしまいます。特に現代では、PCよりスマホ表示がメインです。最低でもPCとスマホ表示は問題ないように、レスポンシブデザインを使えるようにしておきましょう!

また、スマホのタップ操作に対応したイベントもあります。余裕があれば、是非こちらも合わせて用意してみてください!


当サイトで公開しているWebデザインやUIの実装例は、一覧として以下記事に纏めています。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次