CSSの@mediaは、スクリーンサイズだけじゃない! 最近の実装で使用されるメディアクエリのまとめ -mediaquery.style
Post on:2022年8月30日
Webサイトやスマホアプリの実装でよく使用される、CSSのメディアクエリのコードを紹介します。
モバイルファースト用をはじめ、ライトモード・ダークモード用、アクセシビリティ、ホバーエフェクト用、デバイスの向き用など、さまざまなメディアクエリのコードをコピペで簡単に利用できます。スニペットに登録しておくと、便利です。
まずは定番、スクリーンサイズのメディアクエリから。
min-width
は、モバイルファーストを念頭に置いて使用されることが多いです。スマホの小さいスクリーン用のスタイルをベースとして記述し、デスクトップの大きいスクリーン用のスタイルはメディアクエリ内に定義します。
1 2 3 4 5 |
/* ベース: スマホ用のスタイル */ @media (min-width: 768px) { /* 768px以上用のスタイル */ } |
各デバイス用のスクリーンサイズは、以前の記事をご覧ください。
CSS メディアクエリのチートシート、モバイルファースト用、スマホ・タブレットのデバイス用のメディアクエリ
メディアクエリは組み合わせて使用すると、さらに強力です。たとえば、min-width
とmax-width
を組み合わせることで、2つの値の間のみにスタイルを適用できます。
1 2 3 |
@media (min-width: 30em) and (max-width: 60em) { /* 最小幅30emおよび最大幅60emのスタイル */ } |
また、Chrome 104から比較演算子(>=, <=)を使用できるようになりました。
これは朗報! CSSのメディアクエリの範囲指定で、比較演算子を使用できるようになります
メディアクエリでprefers-color-scheme
を使用すると、ライトモードとダークモードでスタイルを定義できます。light
に設定されている場合、OSでライトモードに設定されている場合、メディアクエリ内のスタイルが適用されます。dark
の場合はその逆です。
1 2 3 |
@media (prefers-color-scheme: light) { /* ライトモードのスタイル */ } |
メディアクエリでprefers-reduced-motion
を使用するのは、アクセシビリティに不可欠です。アニメーションのような機能は視覚障害者にとって、動きの違和感を引き起こしたり、過度に気を散らせたりする可能性があります。このクエリはブラウザやOSの動きの抑制に関する設定に対応します。
1 2 3 4 5 6 7 |
@media (prefers-reduced-motion: reduce) { * { animation: none !important; transition-duration: 0s !important; transition-delay: 0s !important; } } |
かっこいいホバーエフェクトがありますが、タッチスクリーンでそのエフェクトが煩わしいと感じることがありませんか? スクリーンサイズのメディアクエリ(hover
をメディアクエリで使用できます。あまり知られていないかもしれませんが、ホバーがサポートされている環境でのみアクティブになります。
1 2 3 4 5 6 |
@media (hover: hover) and (pointer: fine) { a:hover { color: white; background: rebeccapurple; } } |
メディアクエリでorientation
を使用すると、スマホやタブレットなどのデバイスが回転したときに、異なるスタイルを適用します。選択肢は2つだけで、landscape
とportrait
です。
1 2 3 |
@media (orientation: landscape) { /* ランドスケープモード(横向き)のスタイル */ } |
ページをプリントアウトしたときに、間違いに気がついたことはありませんか? メディアクエリでprint
を使用することができます。このメディアタイプを使用すると、印刷されたものに対してスタイルを定義できます。たとえば、印刷時には画像を非表示にしたり、スクリーン用ではなく印刷に適したレイアウトを提供することができます。
1 2 3 |
@media print { /* 印刷時のスタイル */ } |
sponsors