* 仕様書 [REFS[ - [405] [CITE@en[CSS Cascading and Inheritance Level 3]] ([TIME[2013-06-17 13:55:07 +09:00]] 版) ]REFS] * 歴史 [406] 2009年頃の [[CSS3]] を見ると[[代替スタイル・シート]]の名前を指定することができたようです。 [REFS[ -[1] [CITE@en[Web Applications 1.0 r7111 Remove incorrect non-normative sentence.]] ( ([TIME[2012-05-31 08:42:00 +09:00]] 版)) ]REFS] * 実装 [3] ''Complex @import rules'' [CODE(CSS)[@import]] の各 UA の対応表。たしかに IE の対応状況は複雑怪奇。 ([[名無しさん]] [WEAK[2004-03-30 08:15:47 +00:00]]) [4] [CITE[New Internet Explorer @import hack - Anne’s Weblog about Markup & Style]] ([[名無しさん]] [WEAK[2005-10-17 23:42:31 +00:00]]) [7] [CITE@en[Useful CSS Snippets - webSemantics]] ([[Mike Foskett]] 著, [CODE[2007-01-13 16:06:46 +09:00]] 版) [18] [CODE(DOMa)@en[[[cssRules]]]] が[[スタイル・シート]]の読み込まれていない [CODE(CSS)@en[@[[import]]]] ([CODE(DOMi)@en[[[CSSImportRules]]]]) を含んでいる ([[スタイル・シート]]の読み込みの途中の場合や、 [CODE(HTTP)[[[404]]]] 等の場合、あるいは[[無奇癖モード]]で [CODE(MIME)@en[[[text/css]]]] 以外の場合。) と、[[Firefox]] 2 では [CODE(DOMa)@en[[[cssRules]]]] 自体へのアクセスが拒否されます。 ;; [[Opera]] 9 や [[WinIE 6]] では、単にその参照されている[[スタイル・シート]]が空になるだけです。 [19] [[Firefox]] 2 では、[[絶対URI]]や [[相対参照]] ([[空文字列]]) で自分自身 (または[[素片識別子]]だけ違う [[URI]]) を指定しても、 特別な扱いはされません。 [[Opera]] 9 では、[[絶対URI]]または[[相対参照]]で自分自身 (または[[素片識別子]]だけ違う [[URI]]) を指定すると、 [[@規則]]全体が[[無視]]されます ([[CSSOM]] に現れず、 [[レンダリング]]にも影響しません)。 [[WinIE 6]] では、[[絶対URI]] で自分自身 (または[[素片識別子]]だけ異なる [[URI]]) を指定しても、特別な扱いはされません。 [[空文字列]]を指定すると、[[CSSOM]] には反映されますが、 [CODE(DOMa)@en[[[imports]]]] からその[[スタイル・シート]]にアクセスしようとすると、エラーが出て拒否されます。[[レンダリング]]にも影響しません。 [[素片識別子]]だけを指定すると、エラーは出ないのですが、空の[[スタイル・シート]]を指定したかのような結果になります ([[CSSOM]] 上、[[レンダリング]]上)。 ;; [[URI]] として[[空文字列]]を指定: ([[名無しさん]]) [20] >>19 以外の場合について、 [[素片識別子]]のついた [[URI]] を指定すると、 3ブラウザとも[[素片識別子]]のない [[URI]] が指定された場合と同じように処理します。 [[Firefox]] 2 と [[WinIE 6]] では [[CSSOM]] 上の [[URI]] にも[[素片識別子]]がついたままですが、 [[Opera]] 9 では[[素片識別子]]部が除去されたものになります。 ;; [[Opera]] 9 では [CODE(CSS)@en[[[background-image]]]] でも[[素片識別子]]が除去されます。 ([[名無しさん]]) [21] 3ブラウザとも、 [CODE(CSS)[[["]]]] で括られていたとしても、 [[URI]] の先頭と末尾の[[空白]]を除去して処理します。 [[Opera]] 9 と [[WinIE 6]] では、 [[CSSOM]] 上の [[URI]] も[[空白]]を除去したものになります。 ;; [[Opera]] 9 では[[絶対URI]]に[[解決]]されたものになります。 [[Firefox]] 2 では [[CSSOM]] 上の [[URI]] も[[空白]]が残ったものになります。 ;; >>19-20 は[[空白]]を除去した結果に適用されます。 ([[名無しさん]]) [22] 3ブラウザとも、 [CODE(CSS)[[["]]]] で括られていたとしても、 [[URI]] の先頭と末尾の[[空白]]を除去して処理します。 [[Opera]] 9 と [[WinIE 6]] では、 [[CSSOM]] 上の [[URI]] も[[空白]]を除去したものになります。 ;; [[Opera]] 9 では[[絶対URI]]に[[解決]]されたものになります。 [[Firefox]] 2 では [[CSSOM]] 上の [[URI]] も[[空白]]が残ったものになります。 ;; >>19-20 は[[空白]]を除去した結果に適用されます。 ([[名無しさん]]) [23] >>18 訂正: - 読み込み中の場合は、 [CODE(DOMa)@en[[[cssRules]]]] そのものへのアクセスが拒否されます。 - [CODE(HTTP)[[[404]]]] や [CODE(MIME)@en[[[text/css]]]] 以外の場合には、空の[[スタイル・シート]]として扱われます (前者は要検証)。 - ただし、読み込み済みでも、[[same-origin policy]] に反する場合には、当該[[外部スタイル・シート]]に関して、 セキュリティ例外が発生します。 ([[名無しさん]]) [24] [[Firefox]] 2 では、[[輸入]]された[[スタイル・シート]]の中の [CODE(DOMa)@en[[[selectorText]]]] に、なぜか [CODE(CSS)@en[@[[namespace]]]] がなくても [CODE(CSS)[*|]] が補完されることがあるようです。 (詳しい再現条件は不明。一旦読み込んだ[[スタイル・シート]]を再度読み込んだとき?) ([[名無しさん]]) [25] [[WinIE 6]] は[[媒体照会]]の指定に対応しておらず、 [[URI]] の一部として無理矢理解釈しようとします。 ([[名無しさん]]) [26] [[Opera]] 9 や [[Firefox]] 2 は[[構文解析]]や[[直列化]]で [CODE(CSS)@en[@[[media]]]] と同じように[[媒体照会]]を処理するようです。 ([[名無しさん]]) [27] >>26 [CODE(DOMa)@en[[[mediaText]]]] は [CODE(CSS)@en[[[all]]]] が明示的に指定されたときだけ [CODE(CSS)@en[[[all]]] となり、]] 省略されたときには[[空文字列]]になるようです。 ([[名無しさん]]) [28] [[WinIE 6]] では [CODE(CSS)@en[@[[media]]]] 内でも [CODE(CSS)@en[@[[import]]]] が使えますが、 [[媒体型]]に関係なく適用されるようです。 ([[名無しさん]]) [29] >>21 のテスト用 * 不思議解釈 [15] [CITE@ja[XHTML BasicとCSS Mobile Profileを徹底マスターする]] ([CODE[2007-06-10 21:04:09 +09:00]] 版) > ※リンクとインポートの違い > 一見すると、リンクとインポートには違いがないように見える。実はスタイルを1 つだけ定義する場合には、どちらを使っても同じ結果になるのだ。ところが、1つのドキュメントに複数のスタイルを次々にリンクした場合、またはインポートした場合には事情が変わってくる。複数のリンクでは、次々と定義を上書きしていってしまう。これに対して、インポートではスタイルはマージされる。設定したスタイルで矛盾が発生する場合は、より後方で設定されたスタイルが使用される。 意味がわからない。