CSSの@mediaは、スクリーンサイズだけじゃない! 最近の実装で使用されるメディアクエリのまとめ -mediaquery.style
Post on:2022年8月30日
sponsorsr
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















