Guajara in other languages: Spanish, Deutsch, English, French, Italian ...



Cascading Style Sheets

カスケーディング・スタイル・シート (CSS) とは、HTMLXMLの要素をどのように修飾(表示)するかを指示するもの。カスケード・スタイル・シートとも呼ばれる。主にWWWなどで用いられるスタイルシートの一種。文書の構造外観を分離させると目的で作られた。この背景には、HTMLなど記述言語は本来論理的構造を記述するためのものであり、どのように表示するかを記述すべきでないという思想がある。

CSSは、上記の目的を達成するために、HTMLで表現可能と考えられるデザインの大部分を再現できる要素を取り入れつつ新たなデザイン機能を備えるほか、

などの特徴がある。しかし、拡張・修正の続いているこのCSSのすべての要素を完全に再現するユーザエージェントは事実上皆無といってよく、実際シェアで多数を占めるユーザエージェントは部分対応に過ぎない。

Table of contents
1 記述
2 利点と問題点
3 勧告
4 参考
5 外部リンク

記述

スタイルの情報は読み込む内容(作成者スタイルシート)やユーザエージェントの設定(ユーザスタイルシート)の二ヶ所に記載でき、またユーザエージェントも独自のスタイル(デフォルトスタイルシート)を持っている。読み込むHTMLの中に書き込んでも良いし、そのHTMLとは別の文書としても良く、別文書とすることが現在推奨されている。

記述方法

ここではCSS2を用いるものとする。CSSの文法は異なるバージョン間でも互換性を持つように設計されていて、例えばCSS1で書かれたスタイルシートをCSS2として扱っても一部を除いて、ほぼ有効である。CSSでは要素にスタイルを与えるため、次のように仕様が定められている。

p#id { color: #rgb(255, 51, 0) }

とCSSで定めたとき、{から}までを宣言ブロックと言い、その前のp#idをセレクタと言い、宣言ブロックとセレクタを合わせて規則集合と言う。このときこのCSSで指定する文書のセレクタと一致するもの(HTMLの要素の他にも特定のクラスや、親子関係などでの指定も可能)に、宣言ブロック内の宣言を適用する。color: #rgb(255, 51, 0)を宣言と言い、:より前をプロパティ、:より後を値と呼ぶ。宣言はプロパティ:値か、空(何も記述しない)のどちらかで、プロパティ、:、値の前後には空白文字(スペース、タブ、改行など)を自由に入れられ、また;で区切ることにより宣言を並べて書くことが出来る。この記述がなされたとき、HTMLでこのCSSを指定した場合idというIDを持ったp要素の文字色を赤255(=FF)、緑51(=33)、青0とせよと指定することになる。

color: #rgb(255, 51, 0);
width: 35%
color: #rgb("0", "51", "255");
width: '53%'

このような宣言があったとき、後者二つは""や''を付したために不正である。なぜなら、colorプロパティでは色の値(#rrggbb、rgb([0-255],[0-255],[0-255])、または、blackやredなどのキーワードなど)、widthプロパティでは長さの値(px、emなど)しか取ることが出来ず、""や''で囲ったものは文字列として扱われ、RGB値、パーセント値としてユーザエージェントが取ってはならないからである。CSSではプロパティ毎に取れる構文が定まっており、それ以外の値が入っていた場合は無視しなければならないとされているため、注意が必要となる。

p#id { color: #rgb(255, 51, 0) }
p#id { font-size: 24px }
は、
p#id { color: #rgb(255, 51, 0); font-size: 24px }
と等価である。;は前者のように宣言をセレクタに一つずつ書いてあるのをセレクタの記述をひとつだけにするときに使う。そのため、必ずしも宣言に;が入るのを強制するものではない。

優先順位

CSSは必ずしも一つのところで一意に指定できず、そのため指定内容の衝突を避けるために優先順位がユーザエージェントによって計算される。その計算方法は、

  • 作成者スタイルシートはユーザスタイルシートより優先される
  • デフォルトスタイルシートは他のスタイルシートを優先する
  • 最重要指定されている宣言はユーザスタイルシートが作成者スタイルシートより優先される
  • 外部から読み込んだものは読み込んだ先とまとめて扱う
  • 詳細度によって整理する
    • そのセレクタ内で指定先を一意に決められるもの(IDの類)を数えてaとする
    • 属性や擬似クラスの数を数えてbとする
    • 要素の数を数えてcとする
    • 100a+10b+cをそのセレクタの詳細度として、より大きいものを優先させる
  • これでまだ優先順位が同一(作成者スタイルシートにおいて、外部からのものとインラインのものとで同じ詳細度)の場合より後方の指定を優先させる
  • HTMLによる指定は0とする(CSS1においては1)

記載可能な方法の詳細は次の通りで、一般的に優先される順位で並び替えている(CSS2で最重要指定の優先順位の仕様が変更されている、勧告6章4)。

  • ユーザスタイルシート中で最重要指定された宣言
    (ユーザエージェントの設定のスタイルの中で!importantを宣言に付加する)
  • 作成者スタイルシート中で最重要指定された宣言
    (作成者が内容に付随させたスタイル中で!importantを宣言に付加する。作成者スタイルシートの記述方法は以下の通り。)
    • インライン・スタイル・シート
      (特定の要素にスタイルを記述する)
    • エンベッデイング・スタイル・シート
      (HTMLやXMLのヘッダ部にそのページ全体を対象にスタイルを定義する)
    • リンキング・スタイル・シート
      (CSSのみを記述した外部ファイルを用意し、HTMLファイルのヘッダ部からリンクを張ってスタイルを参照させる)
  • 作成者スタイルシート中の通常の宣言
  • ユーザスタイルシート中の通常の宣言
  • デフォルトスタイルシートの宣言

利点と問題点

利点

CSS使う利点としては以下のものが挙げられる。

  • 文書の構造を明快に出来る。
  • 異なるユーザエージェント間で表示に高い互換性を持たせることが出来る。
  • グループ化されたページ間での外観の統一を容易にし、ページの保守性を向上させる。
  • 系統の異なるメディアごとに与えるスタイル情報を容易に変更できる。
  • ユーザごとに専用のスタイルシートを持つことが出来る。

問題点

などのため、なかなか CSS が浸透しないという現状もある。

勧告

CSSのバージョンは複数あり、現在CSS1とCSS2、そしてW3Cで開発中のCSS3がある。詳細は外部リンク参照のこと。

Cascading Style Sheets, level 1 (CSS1), 1996年12月

  • フォントプロパティ
  • 色及び背景のプロパティ
  • テキストプロパティ
    • 語間の調整
    • 行寄せ
  • ボックスプロパティ
    • マージン
    • ボーダー
    • パディング
  • 類別プロパティ
    • 表示
    • リスト

ボックスモデルの参考図
マージン
ボーダー
パディング
内容
パディング
ボーダー
マージン

ボックスにwidth属性を設定したとき、それだとW3Cのボックスのモデルでは内容の横幅であると解釈される。そしてパディングとボーダー分の横幅は要素の横幅に追加される。

他方マイクロソフトのボックスのモデルではwidth属性は内容の横幅とパディングとボーダー分を足したもの、即ち要素全ての横幅になる。

そのため複数のブラウザでこのモデルを使うのは容易でない。これを回避するには、パディングとボーダーを0にする。ほかの可能性はリンクセクションのhackを使う手がある。

しかしInternet Explorerの6ではDOCTYPEが正確ならば標準準拠モードにスウィッチすることが出来る。

Cascading Style Sheets, level 2 (CSS2) 1998年5月

CSS2はCSS1の上位互換で、また幾つかの概念の追加・拡大が行われた。

具体的には表示媒体によってスタイルシートを変更できるようにし、それに附随して音声ブラウザへの対応、印刷媒体への対応が行われ、フォントなどの表示機能の拡張や、ボックスの概念の修正などが行われた。

Cascading Style Sheets, level 2 revision 1 (CSS2.1) 2002年8月

作業中

CSS2のマイナーチェンジとなるバージョン。text-shadowプロパティのように、CSS2で策定されていながらも殆ど実装されない代物などが削除されている(それらはCSS3で定義され直すことになる)。

Cascading Style Sheets, level 3 (CSS3)

作業中

CSS3では全体的にモジュール化され、ユーザエージェントがどれに対応しどれに対応しないか自由に選択できるようになる外、縦方向の書字や、HTML以外の規格にまで関与した内容となっている。まだどのモジュールも勧告されていない。

参考

外部リンク

Conformance Testing:





Wikipedia - All text is available under the terms of the GNU Free Documentation License.

Tagoror dot com  -  Legal Information  -  Contact us