CSS
The CSS `@media` rule is used to dynamically switch styles based on the device's screen size and characteristics.
media属性 / @media
CSSの @mediaは、画面サイズやデバイスの種類に応じてスタイルを適用するためのルールです。例えば、デスクトップ、タブレット、スマートフォンなど異なるデバイスに対して異なるデザインを提供する際に使用されます。@mediaは「メディアクエリ」と呼ばれ、指定した条件(例えば、画面の幅や高さ、解像度、向きなど)が満たされた場合に、その中のスタイルが適用されます。
簡単な例を挙げると
CSS
@media (max-width: 600px) {
body {
background-color: lightblue;
}
}
この例では、画面幅が600ピクセル以下の場合に、背景色をライトブルーに変更するスタイルが適用されます。@mediaを使うことで、レスポンシブデザイン(異なる画面サイズに適応するデザイン)を簡単に実現できます。
@mediaに指定できる条件(メディアクエリ)は、デバイスの特性に基づいて多くの種類があります。
幅・高さに関する条件
- width
- ビューポートの幅
- min-width
- ビューポートの最小幅
- max-width
- ビューポートの最大幅
- height
- ビューポートの高さ
- min-height
- ビューポートの最小高さ
- max-height
- ビューポートの最大高さ
アスペクト比に関する条件
- aspect-ratio
- ビューポートの幅と高さの比率
- min-aspect-ratio
- 最小アスペクト比
- max-aspect-ratio
- 最大アスペクト比
デバイスに関する条件
- device-width
- デバイスのスクリーンの幅
- min-device-width
- デバイスのスクリーンの最小幅
- max-device-width
- デバイスのスクリーンの最大幅
- device-height
- デバイスのスクリーンの高さ
- min-device-height
- デバイスのスクリーンの最小高さ
- max-device-height
- デバイスのスクリーンの最大高さ
解像度に関する条件
- resolution
- デバイスの解像度(dpiまたはdpcm)
- min-resolution
- 最小解像度
- max-resolution
- 最大解像度
画面の向き
- orientation
- デバイスの画面の向き(縦向きまたは横向き)に応じて異なるスタイルを適用するためのルールです。
表示モード
- display-mode
- Webアプリケーションの表示モード(fullscreen、standalone、minimal-ui、browser)
色に関する条件
- color
- デバイスのカラー解像度(ビット数)
- min-color
- 最小カラー解像度
- max-color
- 最大カラー解像度
- color-index
- デバイスのカラーパレットの数
- min-color-index
- 最小カラーパレット数
- max-color-index
- 最大カラーパレット数
モノクロデバイス
- monochrome
- デバイスがモノクロかどうか
- min-monochrome
- モノクロ表示の最小ビット深度
- max-monochrome
- モノクロ表示の最大ビット深度
その他の条件
- scan
- テレビのスキャン方式(interlace または progressive)
- grid
- デバイスがグリッド(格子)レイアウトを使用しているかどうか
- hover
- ホバー操作が可能かどうか
- pointer
- ポインティングデバイスの精度(none、coarse、fine)
- any-hover
- 少なくとも1つのホバーデバイスがあるかどうか
- any-pointer
- 少なくとも1つのポインティングデバイスの精度
これらの条件を組み合わせて、特定のデバイスや環境に適したスタイルを指定できます。
orientation
@media の orientation は、デバイスの画面の向きに応じて CSSを適用するためのメディアクエリの一つです。画面の向きには主に2つの種類があり、以下のように指定します。
- orientation: portrait
- 画面が縦向き(高さが幅よりも大きい場合)のスタイルを指定します。
- orientation: landscape
- 画面が横向き(幅が高さよりも大きい場合)のスタイルを指定します。
このメディアクエリを使うことで、デバイスの向きに合わせてデザインやレイアウトを柔軟に変更することができます。
CSS
@media (orientation: portrait) {
/* 縦向きのスタイル */
body {
background-color: lightblue;
}
}
@media (orientation: landscape) {
/* 横向きのスタイル */
body {
background-color: lightgreen;
}
}
このようにして、デバイスの向きに応じて異なるスタイルを適用することができます。