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
', 'visibility
list-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"
で結構です。