メディアクエリ: media query)は画面の解像度 (例えばスマートフォンの画面とノートパソコンの画面) といった条件に対応してコンテンツの描画が行えるようにするCSS3のモジュールである。2012年6月にはW3C勧告になり、[1]レスポンシブウェブデザイン (responsive web design; RWD) の基礎になっている。

歴史 編集

メディアクエリは1994年にホーコン・ウィウム・リーの最初のCSS案で初めて概要が示されたが[2]CSS1の一部にはならなかった。1997年からのHTML 4勧告で将来どのようにメディアクエリが追加されるかに関する具体例が示されている[3]。2000年にはW3Cによって、メディアクエリや CC/PP の制定が始められた。この2つの案は同じ問題に対処しているが、CC/PP はサーバ中心であるのに対してメディアクエリはブラウザ中心である[4]。2001年には、メディアクエリに関する最初の公開ワーキングドラフトが発行され[5]、2012年には、ブラウザによる対応に伴いその仕様書はW3C勧告となった。

使い方 編集

メディアタイプと1つ以上の式でメディアクエリは構成され、真または偽に決定されるメディア特性に関係を持つ。 メディアクエリで定められたメディアタイプと文書が表示されているデバイスの種類が合い、メディアクエリの式がすべて真であればクエリの結果は真になる。 メディアクエリが真なら対応するスタイルシートやスタイルルールが通常のカスケードルールにあわせて適用される[6][7]

使用例 編集

CSSのメディアクエリの使用例を次に示す。

@media screen and (display-mode: fullscreen) {
  /* 全画面表示の画面にだけここのコードは適用される。 */
}
@media all and (orientation: landscape) {
  /* 画面が横向きの時にだけここのコードは適用される。 */
}
@media screen and (min-device-width: 500px) {
  /* 500ピクセルより幅が広い画面にだけここのコードは適用される。) */
}

[訳注 1]

メディアタイプ 編集

メディアタイプはHTML文書の先頭で<link>要素の中で"media"属性を使って宣言できる。どのデバイスでリンクされた文書が表示されるかが"media"属性の値で指定される[9]。またメディアタイプはXML処理命令の @import at-rule や @media at-rule で定義することもできる。CSS2ではこれらがメディアタイプとして定義されている[10]

スタイルシートがすべてのメディアタイプに適応されることを示す目的にも、メディアタイプの"all"は用いられる[11]

メディア属性 編集

2017年9月5日付のメディアクエリ レベル4の勧告にのせられたメディア属性を次の表でしめす。廃止予定のメディア属性は示していない[8]

属性 種類 説明
width <length> 範囲 出力デバイスの対象となる表示エリアの幅
height <length> 範囲 出力デバイスの対象となる表示エリアの高さ
aspect-ratio <ratio> (<integer> / <integer>) 範囲 "height"属性の値にたいする"width"メディア属性の値の比率
orientation portrait または landscape 個別 "height"属性の値が"width"属性の値以上ならportrait、そうでなければlandscape
resolution <resolution> または infinite 範囲 解像度 (数字の後ろに"dpi"、"dpcm"、または"dppx"をつける)
scan interlace または progressive 個別 一部表示デバイスのスキャン方式
grid <mq-boolean>{0, 1} 個別 出力デバイスがマス目ベースなら1、ビットマップベースなら0
update none または slow または fast 個別 表示されたコンテンツの表示を更新できるか
overflow-block none または scroll または optional-paged または paged 個別 コンテンツが表示エリアからはみだすときどうするか
overflow-inline none または scroll 個別 インラインのコンテンツが表示エリアからはみだすときどうするか
color <integer> 範囲 色要素ごとのビット数
color-index <integer> 範囲 色参照テーブルのエントリー数
monochrome <integer> 範囲 モノクロームのフレームバッファならピクセルごとのビット数、そうでなければ0
color-gamut srgb または p3 または rec2020 個別 ユーザーエージェントや出力デバイスでサポートされるおおよその色の範囲
pointer none または coarse または fine 個別 ポインティングデバイスがあるならその精度、なければnone
hover none または hover 個別 カーソルがページの要素の上を通過するか
any-pointer none または coarse または fine 個別 "pointer"属性と同じだが使用可能なすべてのポインティングデバイスに対応する
any-hover none または hover 個別 "hover"属性と同じだが使用可能なすべてのポインティングデバイスに対応する

脚注 編集

訳注 編集

  1. ^ device-widthはメディアクエリ レベル4で廃止予定になっています。[8]

出典 編集

  1. ^ Media Queries Publication History”. W3C. 2012年6月19日閲覧。
  2. ^ ホーコン・ウィウム・リー. “Cascading HTML Style Sheets”. 2013年1月20日閲覧。
  3. ^ Basic HTML data types”. W3C. 2013年1月20日閲覧。
  4. ^ ホーコン・ウィウム・リー. “Re: Feedback on Media Queries CR”. W3C. 2013年1月20日閲覧。
  5. ^ Media queries”. W3C (2001年4月4日). 2013年1月20日閲覧。
  6. ^ CSS media queries”. Mozilla Developer Network and individual contributors. 2017年4月28日閲覧。
  7. ^ Ryan Boudreaux (2012年7月31日). “How to create media queries in Responsive Web Design - TechRepublic”. TechRepublic. 2014年3月1日閲覧。
  8. ^ a b Media Queries Level 4”. W3C (2017年9月5日). 2018年8月26日閲覧。
  9. ^ HTML link tag”. W3Schools. 2017年4月28日閲覧。
  10. ^ Media Queries”. World Wide Web Consortium. 2017年4月28日閲覧。
  11. ^ Media Queries”. World Wide Web Consortium. 2017年4月28日閲覧。

外部リンク 編集