メディアクエリ 実装解説|CSS Media Query Guide

メディアクエリ デザイン見本

ウィンドウ幅に応じてスタイルを切り替える @media の動作をボタン操作で確認しながら、すぐに使えるコードをコピーできます。

① フォントサイズ・色の変化 — min-width でスタイルを上書き

画面の大きさでフォントサイズとカラーが変わります!

現在: スマホ幅 / 16px / 赤

HTML
<p>画面の大きさでフォントサイズとカラーが変わります!</p>
CSS
p {
  font-size: 16px;
  color: red;
  text-align: center;
}

@media (min-width: 768px) {
  p {
    font-size: 20px;
    color: blue;
  }
}

@media (min-width: 1280px) {
  p {
    font-size: 24px;
    color: #1a1a2e;
  }
}
min-width とモバイルファースト

デフォルトのスタイルをスマホ向けに書き、min-width で画面が広くなるにつれてスタイルを追加します。CSSは後から書いたものが優先されるため、条件を小さい順に書くのがポイントです。この書き方を「モバイルファースト」と呼びます。

② テキストの出し分け — display: none で切り替え

768px未満の画面サイズです!(スマホ想定)

768px以上、1280px未満の画面サイズです!(タブレット想定)

1280px以上の画面サイズです!(PC想定)

現在: スマホ幅

HTML
<p class="txt-sp">768px未満の画面サイズです!(スマホ想定)</p>
<p class="txt-tb">768px以上、1280px未満の画面サイズです!(タブレット想定)</p>
<p class="txt-pc">1280px以上の画面サイズです!(PC想定)</p>
CSS
.txt-sp { display: block; }
.txt-tb { display: none; }
.txt-pc { display: none; }

@media (min-width: 768px) {
  .txt-sp { display: none; }
  .txt-tb { display: block; }
}

@media (min-width: 1280px) {
  .txt-tb { display: none; }
  .txt-pc { display: block; }
}
display: none と display: block

全テキストをHTMLに書いておき、表示したくないものを display: none で隠します。min-width の条件を小さい順に書くことで、画面幅が広くなるにつれて正しく切り替わります。

③ Flexbox レイアウトの変化 — 縦並び → 横並び → 比率変化

1
2
3

現在: スマホ幅 / 縦並び

HTML
<div class="box-wrap">
  <div class="box-1">1</div>
  <div class="box-2">2</div>
  <div class="box-3">3</div>
</div>
CSS
.box-1, .box-2, .box-3 {
  height: 60px;
  border-radius: 6px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: 1rem;
  color: #fff;
  margin-bottom: 8px;
}

.box-1 { background: #38bdf8; }
.box-2 { background: #f87171; }
.box-3 { background: #4ade80; }

@media (min-width: 768px) {
  .box-wrap {
    display: flex;
    gap: 8px;
  }
  .box-1, .box-2, .box-3 {
    flex: 1;
    margin-bottom: 0;
  }
}

@media (min-width: 1280px) {
  .box-1 { flex: 2; }
  .box-2 { flex: 1; }
  .box-3 { flex: 1; }
}
Flexbox と flex プロパティ

タブレット幅以上で display: flex を適用して横並びにします。PC幅では flex の数値で幅の比率を指定できます。flex: 2 と flex: 1 が並ぶと 2:1:1 の比率になります。

④ min-width と max-width の違い

min-width: 800px

100px / 赤(デフォルト)

max-width: 800px

200px / 青(条件一致)

現在: 800px未満の幅

HTML
<!-- min-width / max-width それぞれ単体で使用 -->
<div></div>
CSS
/* min-width の例(800px以上になったらスタイルが変化) */
div {
  width: 50px;
  height: 50px;
  background: #dc2626;
  border-radius: 6px;
}

@media (min-width: 800px) {
  div {
    width: 80px;
    height: 80px;
    background: #2563eb;
  }
}

/* max-width の例(800px以下になったらスタイルが変化) */
div {
  width: 50px;
  height: 50px;
  background: #dc2626;
  border-radius: 6px;
}

@media (max-width: 800px) {
  div {
    width: 80px;
    height: 80px;
    background: #2563eb;
  }
}
min-width — モバイルファースト(推奨)

デフォルトをスマホ向けに書き、画面が広くなるにつれて条件が発火します。現代のWebはスマホ閲覧が主流のため、こちらが推奨されています。

max-width — デスクトップファースト

デフォルトをPC向けに書き、画面が狭くなるにつれて条件が発火します。min-width と動作が逆になるため、混在させると意図しない挙動が起きやすくなります。どちらかに統一するのがオススメです。

ブレイクポイントの目安:スマホ(768px未満)・タブレット(768〜1279px)・PC(1280px以上)が代表的な設定値です。デバイスやデザインに合わせて調整してください。

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

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