見出し画像

継続は力なり#43

メディアクエリー

出力する媒体や状態ごとに、適用するCSSを変えることができる表示領域の幅などに応じてCSSを変えられる便利な機能


メディアクエリーとは

link要素やstyle要素には「media属性」が指定できる
media属性は、CSSの適用対象とする出力媒体を限定したい場合に使用するもの

以下が指定できる

・all(全ての機器)
・screen(パソコン画面)
・print(プリンタ)
・projection(プロジェクタ)
・tv(テレビ)
・handheld(携帯機器(画面が小さく回線容量も小さい機器))
・tty(文字幅が固定の端末(テレタイプやターミナルなど))
・speech(スピーチ・シンセサイザー(音声読み上げソフトなど))
・brille(点字ディスプレイ)
・embossed(点字プリンタ)


CSS3での拡張点

出力媒体の種類だけどなくその媒体の「特徴や状態」を示す式も書き込める
例として、ウィンドウの幅が640ピクセルよりも小さければこのCSSを適用し、640ピクセル以上であればこのCSSを適用する、といった指定が可能になる
出力媒体の特徴の特性や状態を式にあらわして適用するCSSを指定できる昨日のことを「メディアクエリー」という


メディアクエリーの書き方

指定可能な出力媒体の特徴(メディア特性)には以下のものがある

これらのメディア特性には、CSSのプロパティと同様の書式で値を指定して使う
(値をつけずにメディア特性だけで指定できるものもある)
値にはCSSで指定できるものと同じ単位が指定できる
例として、「min-width: 640px」のように書けば「表示領域の幅が640ピクセル以上」という意味になる

出力媒体の指定

メディアクエリーの書き方について

CSS2.1でも使用可能だった出力媒体は、例として link要素 や style要素 の media属性 で以下のように指定した

CSS

media="出力媒体"
media="出力媒体, 出力媒体"

⬇️

CSS

media="screen"
media="screen, print"

メディアクエリーを使用する場合、出力媒体の後に必要な数だけ「and(メディア特性:値)」を追加して条件を加えていく
「出力媒体」と「メディア特性: 値」の式が全て成り立つ場合にのみCSSが適用されることになる
これまで同様にカンマで区切って複数の出力媒体(および and (メディア特性:値))を指定することもできる

CSS

media="出力媒体 and (メディア特性: 値)"
media="出力媒体 and (メディア特性: 値) and (メディア特性: 値)"
media="出力媒体 and (メディア特性: 値) and (メディア特性: 値), 出力媒体"

⬇️

CSS

media="screen and (min-width: 640px)"
media="screen and (min-width: 640px) and (max-width: 800px)"
media="screen and (min-width: 640px) and (max-width: 800px), print"


@mediaについて

「@meia」使った書式を利用すると、CSSのソースコードの中に出力媒体とメディアクエリーの指定を書き込むことができる
特定の出力媒体が特定の状態になっている場合にのみ、その部品の指定を適用させることが可能

CSS

@media 出力媒体 メディアクエリー {
   セレクタ { プロパティ: 値;・・・}
   セレクタ { プロパティ: 値;・・・}
   セレクタ { プロパティ: 値;・・・}
   ・・・
}

⬇️

CSS

@media screen and (min-width: 640px) and (max-width: 800px) {
   main { float: none; }
   #sub { float: none; }
   p { font-size: 13px; }
}