Cascading Style Sheets
CSS は必ずしも一つのところで一意に指定できず、そのため指定内容の衝突を避けるために優先順位がユーザーエージェントによって計算される。その結果は、以下のような条件により算出される。
作成者スタイルシートはユーザースタイルシートより優先される
デフォルトスタイルシートは他のスタイルシートを優先する
最重要指定されている宣言はユーザースタイルシートが作成者スタイルシートより優先される(CSS1 では逆)
外部から読み込んだものは読み込んだ先とまとめて扱う
詳細度によって整理する そのセレクタ内で指定先を一意に決められるもの(ID の類)が多い方を優先する ID の類による優先順位が同じ場合は、属性や擬似クラスの数が多い方を優先する それでも優先順位が決まらない場合は、要素の数が多い方を優先する
これでもまだ優先順位が同一の場合、作成者スタイルシートにおいて以下の順で優先する インラインのもの 外部からのもの
HTML の align 属性など、CSS 以外によるスタイルの指定は、それと等価な CSS によるスタイル指定が製作者スタイルシートの先頭にあるものとして扱う。
CSS2 は CSS1 の上位互換。幾つかの概念の追加・拡大・改訂が行われた。
具体的には表示媒体(モニターや TV、紙媒体など)によって自動的にスタイルシートを変更できるようにし、それに附随して音声ブラウザへの対応、印刷媒体への対応が行われ、フォントなどの表示機能の拡張や、ボックスの概念の修正などが行われた。
ただし2002年頃以降に発表されたCSS対応UAで、これを仕様と見なしているものは存在せず、実質的に、CSS2.1 に仕様としての役割を委ねた形になっている。CSS2勧告の仕様書にアクセスすると、CSS2 は管理されておらず、仕様の参照や実装は CSS 2.1 を基にせよと奨励する注意書きがある。
ただし、これらの詳細度は最も低いものとする(CSS1 においては要素名による指定を一つだけ含むセレクタと同じ詳細度)
記載可能な方法の詳細は次の通りで、一般的に優先される順位で並べ替えている(CSS2で最重要指定の優先順位の仕様が変更されている、勧告6章4)。
ユーザスタイルシート中で最重要指定された宣言 - ユーザーエージェントの設定のスタイルの中で !important を宣言に付加する
作成者スタイルシート中で最重要指定された宣言 - 作成者が内容に付随させたスタイル中で !important を宣言に付加する。
作成者スタイルシート中の通常の宣言
ユーザースタイルシート中の通常の宣言
デフォルトスタイルシートの宣言
作成者スタイルシートの記述方法による優先順位は以下の通り。
特定の要素にスタイルを記述する
HTML や XML のヘッダ部にそのページ全体を対象にスタイルを定義する
CSS のみを記述した外部ファイルを用意し、HTML ファイルのヘッダ部からリンクを張ってスタイルを参照させる