CSSの基底URL

CSSの基底URL

[2] 本項では CSS における基底URLと URLの解決について扱います。

仕様書

基底 URL

[6] CSSスタイルシートの基底URLはスタイルシート自体の基底URLであって、 参照元の文書の基底URLではありません >>5。

[3] HTML style 要素のスタイル言語の処理器がみつけた URL は、要素の基底URLに対して (あるいはスタイル言語の規定するところにより) 解決しなければなりません >>1。

[4] style 属性その他の埋め込み・参照方法の基底URLについての規定はありません。

[8] style 要素や style 属性は基底URL変更の影響を受けません >>7。

[9] 例えば pushState によって文書基底URLが変化しても、それ以前からあった style 要素のスタイルシートの基底URLは変化しません。 その後、たとえば style 要素の textContent 属性に値を設定すると、新しい基底URLで改めてスタイルシートが評価されるため、 新しい基底URLに変化します。

[10] >>5 によれば <url> の指定値は元の値、算出値は解決した値ということになっていますが、 Chrome の CSSOM に現れるのは解決した値です (Firefox と WinIE9 では元の値)。構文解析の時点で絶対URLに解決されているものと思われます。

[11] Chrome も Firefox も、 style 要素から作られたスタイルシートは作成時点での要素の基底URLをコピーしていて、 その後変化しても追随しないようです。一方 style 属性は基底URLを持っておらず、 値を設定するとその時点での要素の基底URLを使って解決し、解決済みの値は基底URLが変わっても保持し続けるようです。

[12] @import では URL は構文に関わらず Chrome でも Firefox でも元々の値が CSSOM に現れます。