@規則

CSSのルール定義の始まる前に@規則と呼ばれる記法で 書かれた特別なCSS記述読み込み処理を行なわせられる。いずれの@規則も 個別の定義のあとに来るものは無視されるべきものなので、

× ふさわしくない例

h1 {text-align: center}
@import "foo.css";

の2行目、「@import "foo.css";」は 無視される(@importについては後述))。これは、

○ ふさわしい例

@import "foo.css";
h1 {text-align: center}

のような順番で書く必要がある。@規則による文はいくつ書いてもよいが、 必ず全ての@規則の文を終えたあとで特性値の定義に進む。

@media

文書を出力するメディアによって、それ固有のスタイルを切り替える ことが必要となる場合がある。出力先にはディスプレイ画面、投影機、 紙、音声読み上げ装置、点字装置などがあり、各々に固有のスタイル、 あるいは似通っているが違う効果を持たせた方がよいスタイルを 切り替えることがよい場合がある。

メディア型

CSSは特定の出力先メディアによって、設定できる特性の集合が決まる。 ただしそうした集合は、具体的な装置名で決まるのではなく概念的な 機能によって分類される。たとえば、「コンピュータディスプレイ」のような 具体的種別名ではなく、screen という抽象名が決まっている。これを メディア型という。

CSSで区別されるメディア型には以下のものがある。

aural

音声読み上げ装置の類に該当するものを想定

braille

点字装置の類に該当するものを想定

embossed

ページ付けした点字プリンタの類

handheld

ハンドヘルド装置の類(携帯可能で、小さい画面、少ない色数、 遅い通信速度、などの制約を持つものを想定

print

ページ付けした印刷物を想定

projection

投影画面(スライドやOHP、プロジェクタなど)

screen

十分なカラー表示機能を持つコンピュータ画面

tty

文字端末あるいは表示能力が制限された装置

tv

テレビのようなメディア(カラー表示可能だが、低解像度、スクロール できない画面で音を出す機能があるもの)

all

上記全てに適用可能なものを示す

メディアによる切り替え

@規則による切り替えは以下のように表記する。

@media メディア型(群) { スタイル定義本体…… }

メディア型(群)の部分には、前述のメディア型 を1つ、またはカンマ(,)で区切って列挙する。以下の例はディスプレイ画面と 紙メディアでのフォントサイズを別々に指定するものである。

@media print {
  body {font-size: 10pt}
}
@media screen {
  body {font-size: 12pt}
}

メディア特性

media=screenのメディアの物理特性によって切り替えることができる。 よく使うものはピクセル幅や高さに応じて切り替えるいかの記法である。

(max-width: 最大ピクセル数)
(min-width: 最小ピクセル数)
(orientation: 縦長か横長か)

ピクセルサイズを基準に段組みを変えたい場合などに使える。

@media (max-width: 800px) {
  /* 幅800ピクセルまでのCSS定義をここに列挙 */
}
@media (min-width: 801px) {
  /* 幅801ピクセル以上のCSS定義をここに列挙 */
}
@media (orientation: portrait) {
  /* 画面が縦長のときのCSS定義をここに列挙 */
}
@media (orientation: landscape) {
  /* 画面が横長のときのCSS定義をここに列挙 */
}

なお、スマートフォンの場合は物理的なピクセルがコンピュータ画面に 比べて極端に小さいことから、物理ピクセル数とCSS判定上の ピクセル数が異なっているため、そのまま解像度判定を使うと 想定と異なる結果となる。整合性を取るため、HTML文書の head 要素内に 以下の記述を入れておくとよい。

<meta name="viewport" content="width=device-width, initial-scale=1" />

@import

ひとつのスタイルシート(ファイル)から別のスタイルシートを取り込むこと ができる。これには@import規則を使う。あるスタイルシートから、 別のスタイルシート(foo.css)を取り込むには以下のようにする。

@import "foo.css";

または、

@import url("foo.css");

ファイルの取り込みを特定のメディア用に限定するために、 前述のメディア型を後置することができる。たとえば、

@import url("paper.css") print;

とすると、出力メディアが印刷物(print)の場合のみ、"paper.css" を取り込む。また、

@import url("color.css") screen, projection;

のように、メディア型をカンマで区切って複数指定することもできる。

yuuji@koeki-u.ac.jp