備忘録的プログラミングリファレンス

@media

 @media は、条件ごとにスタイルを摘要する at-rule の1つです。 プリンタやディスプレイなどのデバイス、ブラウザ、スマートフォン、適応中のスタイルなどの特性に応じてスタイルの設定を自動で変更することができます。

@media で印刷時とディスプレイで文字の大きさを変える
@media print {
	body{
		font-size: 11px;
	}
}

@media screen {
	body{
		font-size: 16px;
	}
}

詳しくは Example を参照してください

 @mediaによって、PCでみる場合とモバイル端末で見る場合によってサイトのスタイル設定を変えることができます。

 メディアクエリは入れ子にすることができます。

 at-rule は、@-規則や@ルール、アットルールと言われます。

構文( Syntax )

@media メディアクエリー {
	セレクター{
		設定
	}
};

 メディアクエリーは、メディア種別、メディア特性、メディアクエリーに使われる論理演算子です。
 以下はメディア種別についての一覧です。メディア種別は、印刷時、ディスプレイの表示において、音声ごとに条件分けをするために使います。

メディア種別

メディア種別名概要
all以下のすべて(メディア種別省略時のデフォルト)
print印刷用
screenディスプレイでの表示
speech音声

メディア特性

 メディア特性は、スタイシートの設定内容、出力方法、ブラウザによる特性による条件分けに利用します。

 メディア特性を利用する方法は以下のように ( メディア特性 : 値 ) という記述をします。

@media (hover:hover) {
	p:hover{
		background-color: red;
	}
};

 以下はメディア特性についての一覧です。

メディア特性概要
ポインター、ポインティング
any-hover none | hover マウスポインターのように何らかの hover が利用できるデバイスであるか
any-pointer none | coarse | fine 何らかのポインティングが利用できる場合
hover none | hover マウスポインターのように hover が利用できるデバイスか
pointer none | coarse | fine ポインティングデバイスである場合
表示範囲、表示方法
aspect-ratio width / height ビューポートのアスペクト比(幅 / 高さ)で指定
display-mode fullscreen | standalone | minimal-ui | browser フルスクリーンであるか、または通常表示か。フルスクリーンも選ぶことができる。
grid 0 | 1 固定フォントやテキストのみを表示するグリッドベースのデバイスか。0.. falseなら、1..trueなら
height, min-height, max-height CSS の長さ ビューポートの高さ。最小、最大。スクロールバーによる範囲も含む
width, min-width, max-width CSS の長さ ビューポートの幅。最小、最大。スクロールバーによる範囲も含む
monochrome 0 | 1 モノクロによる表示デバイスであるなら。0.. falseなら、1..trueなら
orientation portrait | landscape portrait はビューポートが横 >= 幅であれば。landscape は横 <= 幅であれば
overflow-block none | scroll | optional-paged | paged 横書きでは上下方向に対してスクロールなどの設定によって
overflow-inline none | scroll 横書きでは左右方向に対してスクロールなどの設定によって
resolution, min-resolution, max-resolution dpi 単位でピクセル解像度によって
scripting none | initial-only | enabled スクリプトが利用できるか
update none | slow | fast CSS アニメーションにおける描写速度によって
color, min-color, max-color ビット数 ディスプレイの発色数。ビットカラー
color-gamut srgb | p3 | rec2020 ブラウザやディスプレイの色空間の設定によって
color-index, min-color-index, max-color-index 数値 ディスプレイの出力色数
forced-colors none | active ブラウザによるカラーパレットの制限があるか
inverted-colors none | inverted 色を反転していることによって
prefers-color-scheme light | dark 明暗によって
prefers-contrast no-preference | more | dark コントラストによって
その他
prefers-reduced-motion no-preference | reduce 動きのあるコンテツをユーザーが望んでいるか

論理演算子

 論理演算子は、上記のメディア種別やメディア特性による条件に、論理積、論理和、NOT否定を行うことができます。only は古いブラウザのためにあります。

@media only screen and ( max-width:760px ) {
	body{
		font-zize: 18px;
	}
};

 以下は論理演算子についての一覧です。

and論理積 AND。すべてのメディア種別やメディア特性の条件(クエリー)が一致したら
,(カンマ)論理和 OR。いずれかのメディア種別やメディア特性の条件(クエリー)が一致したら
not否定 NOT。メディア種別やメディア特性の条件に一致しない。
onlyクエリーの条件に一致するもののみ。古いブラウザのためには使用したほうがよい。

Example

表示幅によるスタイル変更例

 デバイスの表示幅ごとに設定を適応する例です。

@media only screen
  and ( max-width:760px ){
    body {
			font-size: 15px;
			line-height: 2.1;
		}
}

@media only screen
	and (min-width: 761px)
  and ( max-width:1200px ){
    body {
			font-size: 15px;
			line-height: 2.2em;
		}
}

@media only screen
	and (min-width: 1201px)
  and ( max-width:1500px ){
    body {
			font-size: 15px;
			line-height: 2.2em;
		}
}

 表示するデバイスごとにスタイルを変更するには、@importでデバイスごとの CSS ファイルを読み込む方が便利です。

@import url("./mobile.css") screen and (min-width:0px) and ( max-width:768px);

@import url("./pad.css") screen and (min-width:768px) and ( max-width:1024px);

@import url("./normal.css") screen and (min-width:1024px);

メディア特性、ポインターやポインティング