Blog

※ブログ移転しました。 → hamashun.me

バックスラッシュハックについての考察

MacIE5.xに対するCSS Hackで、バックスラッシュハックという物があります。
例えば、


.div {
	color:#f00;
	/*\*/ color:#00f; /* */
 }

と、このように記述する事で、MacIE5.xは文字色が赤になり、それ以外のブラウザでは青になります。
今日は、その仕組みについて考えてみました。
やっぱり、特殊な技術を使うなら、『なぜそうなるのか』を知っておきたいと思うので。

CSS2の仕様として、バックスラッシュは、『その直後の文字が持っている特別な意味を無効にする』という効果があります。
例えば、"\""と記述すると、"が本来持つ、『値の始まりと終わり』という意味を無効にして、単純に"という文字列にします。
WinIE4~5.5まではこのバックスラッシュ・エスケープに対応していなく、これを利用したのが有名なTantek Box Model Hackです。

ここから先は、上手い具合に資料を探せなかったので僕の憶測も含まれるのですけど、恐らく、MacIE5.xには、また少し異なるバグがあるのではないのでしょうか?
前述のコードで、バックスラッシュ・エスケープによって、CSSコメント終了のアスタリスクが文字列に変わる(MacIE5.xは、バックスラッシュ・エスケープに対応しています)・・・・・・はずなのですけど、\が記述されている位置はコメント内なので、『バックスラッシュの効果自体が無くなる』のではないでしょうか?
でも、MacIE5.xではそれを無視して、コメント終了を認識しなくなるのでは、と。
その結果、次にコメント終了タグが出てくるまで、コメント状態が続くのではないのかと。
何故、再びコメントタグを開始終了のセットを記述するのかというと、他のブラウザに対して正式な記述とする為ではないでしょうか。

補足1:
文字コードがShift_JISの場合、バックスラッシュは円マーク(¥)として表示されます。

補足2: 以下の資料を元にこの記事を書きました。
CSS2 syntax and basic data types  4.1.3 文字及びその大小
centricle : css filters (css hacks)

TracBack

Reference Entry:  バックスラッシュハックについての考察:

CODE-0 » Mac版IEへの対応
現在サイトを作成していて、非常に頭を悩ませるのが、各ブラウザでのCSSの解釈の違...
TracBack Time:  2006年09月08日 00:28

Contribution Form

Blog Search
Search
Recent Entry
Category
Monthly Archive