last modified: 23rd/Aug./2001
Contents
ここでいう「メディア」とは、ウェブページの出力媒体のことです。例えば、コンピュータスクリーンは、 screen に分類されます。 CSS では、出力媒体に応じて、文書の見栄えを変更することができます。
このページでは、コンピュータスクリーン (media="screen") 向けの外部スタイルシートと、印刷物と印刷プレビューモード (media="print") 向けの外部スタイルシートを参照しています。ブラウザに「印刷プレビュー」のメニューがある場合には、試してみてください。もしブラウザがメディアタイプをサポートしていれば、コンピュータスクリーンでご覧になる見栄えと、印刷物や印刷プレビューモードでご覧になる見栄えとは、異なっているはずです。
本稿では殆どふれませんでしたが、全ての CSS Propaty には、一連のメディアタイプが設定されており、該当するメディアでなければ機能しません。コンピュータ・スクリーン screen で機能しないプロパティの代表的なものでは、ページ媒体 print の改ページ、音声合成機器(スピーチ・シンセサイザー) aural の喋る大きさ、速さなどがあります。
CSS ではこのような出力媒体の種類を、メディアタイプとして区別しています。利用できるメディアタイプは以下の通りです:
all が適用されます。例えば、次のような場合に、メディアを指定しておくことは有意義です:
また、次のようなメリットもあります:
例えば、目の不自由な方などが利用する点字出力ブラウザや音声ブラウザに対して、フォントなどのビジュアル指定のスタイルシートは読み込んでも、良いことがありません。システムリソースを浪費し、読み込み時間が無駄なだけです。
メディア・タイプ毎に、指定できるプロパティが異なります。CSS 仕様書では、メディアタイプを all を含めた 11 個のグループに分けて定義しています。
各グループ毎に、どのメディアタイプが含まれるかをまとめたのが次のリストです。
メディアタイプ毎に、どのグループに属するかをまとめたのが次のテーブルです。
| media types | media groups | |||
|---|---|---|---|---|
| continuous/paged | visual/audio/speech/tactile | grid/bitmap | interactive/static | |
| braille | continuous | tactile | grid | both |
| embossed | paged | tactile | grid | static |
| handheld | both | visual, audio, speech | both | both |
| paged | visual | bitmap | static | |
| projection | paged | visual | bitmap | interactive |
| screen | continuous | visual, audio | bitmap | both |
| speech | continuous | speech | n/a | both |
| tty | continuous | visual | grid | both |
| tv | both | visual, audio | bitmap | both |
各々のグループごとに、指定可能なプロパティは、次のように分類されています。
display'content', 'counter-increment', 'counter-reset'azimuth', 'cue-after', 'cue-before', 'cue', 'elevation', 'pause-after', 'pause-before', 'pause', 'pitch-range', 'pitch', 'play-during', 'richness', 'speak-header', 'speak-numeral', 'speak-punctuation', 'speak', 'speech-rate', 'stress', 'voice-family', 'volume'background-attachment', 'background-color', 'background-image', 'background-position', 'background-repeat', 'background', 'color'margin-bottom', 'margin-left', 'margin-right', 'margin-top', 'margin'padding-bottom', 'padding-left', 'padding-right', 'padding-top', 'padding'border-bottom-color', 'border-bottom-style', 'border-bottom-width', 'border-bottom', 'border-color', 'border-left-color', 'border-left-style', 'border-left-width', 'border-left', 'border-right-color', 'border-right-style', 'border-right-width', 'border-right', 'border-spacing', 'border-style', 'border-top-color', 'border-top-style', 'border-top-width', 'border-top', 'border-width', 'border'bottom', 'left', 'right', 'top', 'clear', 'direction', 'float', 'position', 'unicode-bidi', 'z-index'height', 'line-height', 'max-height', 'max-width', 'min-height', 'min-width', 'vertical-align', 'width'clip', 'overflow', 'visibilitylist-style-image', 'list-style-position', 'list-style-type', 'list-style'quotes'font-family', 'font-size', 'font-style', 'font-variant', 'font-weight', 'font'letter-spacing', 'text-align', 'text-decoration', 'text-indent', 'text-transform', 'white-space', 'word-spacing'border-collapse', 'caption-side', 'empty-cells', 'table-layout'cursor', 'outline-color', 'outline-style', 'outline-width', 'outline'orphans', 'page-break-after', 'page-break-before', 'page-break-inside', 'widows'ウェブ文書にスタイルシートを適用させるときに、上述のメディアタイプも指定する方法は、次の三つの方法が用意されています:
link 要素外部スタイルシートを HTML 文書から参照するには、 link 要素を用います。このとき、 HTML 4, XHTML 1.0 では、依存するメディアタイプを指定することが出来ます。
<link rel="stylesheet" type="text/css"
href="./atomic.css" media="screen, print">
この例では、ファイル atomic.css を、当該文書に適用するスタイルシートとして参照しています。且つ、このリンクは、メディアタイプが screen か print であるデバイスに対してだけ有効です。
media 属性の値は、単独のメディアタイプか、それらをコンマで区切ったリストになります。 rel 属性のリンクタイプはスペース区切りでしたから、間違えないように注意が必要です。
@import 規則他のスタイルシートから規則をインポートするために、 @import 宣言を用います。このとき、メディアタイプを指定することが出来ます。
@import url("fineprint.css") print;
@import url("bluish.css") projection, tv;
@import 規則は、当該スタイルシート内のあらゆる規則に先行して、スタイルシートの冒頭に記述しなければならない。@media 規則@import と似たようなものに、 @media があります。これを用いると、一つのスタイルシートに、複数のメディアタイプに対する規則を記述することが出来ます。
@media print {
/* 紙媒体向けスタイル定義 */
body { font: 10pt serif }
}
@media screen {
/* コンピュータスクリーン向けスタイル定義 */
body { font: 12pt sans-serif }
}
@media screen, print {
/* スクリーン及び紙媒体向けスタイルシート */
body { line-height: 1.2 }
}
では、このスタイルシート自体のメディアタイプはどうすればよいでしょう?上記の例では、 media="print, screen" とするのが適当でしょうが、一般には、 media="all" で結構です。