【めでぃあくえり】

メディアクエリ とは?

最終更新:
💡 表示環境や利用者の設定を条件に、CSSを適用する

表示媒体やブラウザの表示領域、利用者の設定などの条件を調べる仕組み。CSSの@mediaでは、条件を満たす場合に中のルールが適用対象になる。画面の幅に応じたレイアウト、印刷用の表示、配色の設定への対応などに使える。

📌 このページのポイント
幅の条件に合わせ、配置を指定する 表示領域の幅で比べた配置の例 1列 狭い表示領域 2列 中間の幅 3列 広い表示領域 列数や境界はCSSで自分で決める
メディアクエリが端末の種類や列数を自動的に決めるわけではない。表示領域の幅以外に、印刷や利用者の設定なども条件にできる。
ひよこ ひよこ
メディアクエリって何?
ペンギン先生 ペンギン先生
表示環境などに条件を付ける仕組みだよ。CSSなら@mediaを使い、例えば表示領域が狭い場合に別の配置を指定できる。条件を満たしただけで全スタイルが置き換わるわけではなく、通常のCSSの優先順位も働くんだ。
ひよこ ひよこ
幅の条件はどう書くの?
ペンギン先生 ペンギン先生
@media (max-width: 768px)なら、表示領域の幅が768 CSSピクセル以下という条件だよ。中に変更したい要素のCSSを書く。768は例で、スマホやタブレットを自動判定する特別な数値ではないんだ。
ひよこ ひよこ
画面幅以外には?
ペンギン先生 ペンギン先生
@media printは印刷用、@media (prefers-color-scheme: dark)は利用者が暗い配色を希望する設定に対応するよ。@media (hover: hover)は主な入力方法でホバーできるかを見る。必ずマウスが接続されている、という判定ではないんだ。
ひよこ ひよこ
境界はどう決めるの?
ペンギン先生 ペンギン先生
文字や内容が読みづらくなる幅を確認し、必要なところに境界を置こう。特定端末の幅だけで決めると、別の表示領域で崩れることがある。境界の前後と、ちょうどその幅でも表示を確認するといいね。
ひよこ ひよこ
コンテナクエリとの違いは?
ペンギン先生 ペンギン先生
サイズのコンテナクエリは、表示領域全体ではなく、対象の祖先に指定した問い合わせ対象の寸法を条件にする。container-type: inline-sizeなどで対象を用意し、@containerで中の要素のスタイルを変えるよ。メディアクエリも部品のCSSに使えるから、「ページ用と部品用」という固定の区別ではないんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「メディアクエリ」って出てきたら「表示環境や利用者の設定を条件に、CSSを適用する」と思えばだいたいOK!
📖 おまけ:英語の意味
「Media Query」 = 表示媒体などについての問い合わせ
💬 Mediaは媒体、Queryは問い合わせ。端末名を当てるものではなく、指定した表示環境の条件に合うかを調べるんだ。

参考資料

← 用語集にもどる