スタイリング
4.2.7 スタイリング
link 要素と style 要素は、ユーザーエージェントがドキュメントのレンダリング時に使うスタイリング情報を提供することができます。DOM スタイリング仕様では、ユーザーエージェントがどのスタイリング情報を使うべきなのかや、それをどうやって使うのかについて規定しています。[CSSOM]
style 要素と link 要素は、LinkStyle インタフェースを実装します。[CSSOM]
style 要素では、もし、ユーザーエージェントが指定のスタイリング言語をサポートしていないなら、その要素の LinkStyle インタフェースの sheet 属性は null を返さなければいけません。同様に、スタイリング処理モデルに寄与する外部リソースリンクを表さない link 要素(つまり、rel 属性がキーワード stylesheet になっていない)と、指定のリソースがまだフェッチされていない、もしくは、それが未サポートのスタイリング言語となる link 要素では、その LinkStyle インタフェースの sheet 属性は null を返さなければいけません。
そうでなければ、その LinkStyle インタフェースの sheet 属性は、次のプロパティを持った StyleSheet オブジェクトを返さなければいけません:[CSSOM]
- スタイルシート・タイプ
-
スタイルシート・タイプは、スタイルに指定されているタイプと同じでなければいけません。
style要素では、これは、typeコンテンツ属性の値と同じになります。もしこの属性が省略されたらtext/cssとなります。link要素では、これは、指定リソースの Content-Type メディアデータとなります。 - スタイルシート・ロケーション
-
link要素では、そのロケーションは、この要素のhrefコンテンツ属性で与えられた URL をこの要素に対して解決した結果でなければいけません。解決に失敗したら空文字列になります。style要素には、ロケーションはありません。 - スタイルシート・メディア
-
メディアは、その要素の
mediaコンテンツ属性の値と同じでなければいけません。または、その属性が省略されたら場合は、空文字列となります。 - スタイルシート・タイトル
-
タイトルは、その要素の
titleコンテンツ属性が存在し、値が空でなければ、その値と同じでなければいけません。この属性が存在しない、または、その値が空文字列なら、そのスタイルシートはタイトルを持ちません(そのタイトルは空文字列ということになります)。タイトルは、代替えスタイルシートセットを定義するために使われます。 - スタイルシート・代替フラグ
-
link要素では、そのリンクが代替スタイルシートであれば、true となります。それ以外はすべて false となります。
毎回、同じオブジェクトが返されなければいけません。
link と style 要素の disabled IDL 属性は、LinkStyle インタフェースの sheet 属性が null なら、false を返さなければならず、セット時においては何もしてはいけません。そうでなければ、取得時においては、StyleSheet インタフェースの disabled 属性の値を返さなければならず、セット時においては、 その同じ属性に新しい値を転送しなければいけません。
代替スタイルシートの取り扱いの規則は、CSS オブジェクト・モデル仕様で定義されています。[CSSOM]
link 要素、style 要素、<?xml-stylesheet> PI、HTTP の Link: ヘッダー、その他のメカニズムのどれによって追加されたに関わらず、スタイルシートは、style sheet ready フラグを持ちます。これは、最初はセットされません。
スタイルシートの適用の準備ができたとき、その style sheet
ready フラグがセットされなければいけません。スタイルシートが他のリソースをひとつも参照していなかったら(例えば、style 要素によって与えられた内部的なスタイルシートで、@import ルールを持たない)、そのスタイルのルールは、同調して、スクリプトに対して利用できるようにしなければいけません。そうでなければ、スタイルのルールは、イベント・ループが "レンダリングのアップデート" 手順に達した場合に限り、スクリプトに対して利用可能とならなければいけません。
ある条件を満たし、HTML パーサーや XML パーサーの Document のコンテキストにあるスタイルシートのことを、スクリプトをブロックするスタイルシート といいます。その条件とは、該当の要素がその Document のパーサーによって生成され、かつ、その要素が style 要素か link 要素のいずれかで、その要素がパーサーによって生成されたときに スタイリング処理モデルに寄与する外部リソース・リンク であり、かつ、その要素がパーサーによって生成されたときに、その要素のスタイルシートが有効であり、かつ、その要素に style sheet ready フラグがまだセットされておらず、かつ、イベント・ループが手順 1 に最後に達するとき、その要素が その Document の中にあり、かつ、ユーザーエージェントがまだその特定のスタイルシートを見捨てていなかった場合です。ユーザーエージェントはスタイルシートをいつでも見捨てることができます。
Document のコンテキストの中にスクリプトをブロックしているスタイル・シートがある、または、 Document が親のブラウジング・コンテキストを持つブラウジング・コンテキストの中にあるならば、その Document は、スクリプトをブロックしているスタイル・シートを持つといいます。そして、その親のブラウジング・コンテキストのアクティブ・ドキュメントは、それ自身で、スクリプトをブロックしているスタイル・シートを持ちます。
前段落で定義したとおりに Document がスクリプトをブロックしているスタイル・シートを持たないなら、その Document は、スクリプトをブロックしているスタイル・シートを持たないといいます。
※ 原文:http://www.w3.org/TR/2011/WD-html5-20110525/semantics.html#styling