Appendix B : 互換性の問題

 CSS はブラウザの対応についていくぶんかの自由度がある。サポートが必須でないものについて再現されないことに文句を言ってもしかたがない。もうひとつ,CSS1 に“おかしな”対応をしている Internet Explorer 3.0 のことについても触れておこう。

CSS1 Core

 CSS1 の規格は二重構造になっている。“これだけは最低限サポートされなければならない”必須のものというなればオプショナルのものとがある。必須のものは CSS1 Core という。

 このことは今までとくに触れなかったが,ときどき“ブラウザによっては……しなくてもよい”という記述で記しておいた。これが CSS1 Core 外の CSS1 の部分である。したがって,CSS のデザインに際しては,それらがサポートされない可能性を覚悟する必要がある。

 CSS1 Core 外のフィーチャーについてまとめておくことにしよう。

first-letter 疑似要素,first-line 疑似要素
この要素についての指定は無視してもよい。また,部分的な対応でも構わない。
text-transform 属性
キーワード small-caps に対して,スモールキャピタル体にせず単に大文字にするだけでも構わない。
background-attachment-属性
キーワード fixed に対してそれを scroll と解釈してもよい。ただし,少なくとも <BODY> ではサポートされるのが望ましい。
word-spacing 属性
あらゆる値を normal と解釈してもよい。
letter-spacing 属性
あらゆる値を normal と解釈してもよい。
text-transform 属性
欧文以外,または大文字・小文字の変換が Unicode で定義されたものと異なる言語についてはこの属性を無視してよい。
text-align 属性
キーワード justifyleft あるいは right と見なして構わない。このとき,どちらにするかはテキストの流れる方向による。
border-style 属性
キーワード dotteddasheddoublegrooveridgeinsetoutsetsolid と見なしてもよい。
height 属性
置換要素以外については,あらゆる値を auto と解釈してもよい。
display 属性
指定を無視し,ブラウザが決めた値に従ってもよい。
white-space 属性
指定を無視し,ブラウザが決めた値に従ってもよい。

 以上が CSS1 Core 外の部分である。現在の主要なブラウザは,少なくとも実用レベルでは CSS1 Core を満たしていると言えよう。

Internet Explorer 3.0 における CSS

 Internet Explorer 3.0(以下,IE3)は W3C が CSS1 の規格を練っている最中に発表されたため,中途段階の CSS1 規格が反映されている。しかも,いくつかの規格にそぐわない点,また,バグが存在する。したがって,CSS1 の規格に忠実に作成した CSS でも,信じられないくらいおかしなスタイルになっていることもある。また,属性の“相性”が悪いと表示が乱れるおそれもある。

 IE3 の CSS1 の対応状況,不具合は詳しくは Microsoft 社のドキュメントを参考にしていただきたい。ここではおもな点をピックアップするにとどめる。

このほかにも対応していない属性や記述がある。

 そこで困るのは,同一の CSS では IE3 でひじょうにまずい結果になることがあるということである。解決策としては,最大公約数的に書くことがあるが,これでは大きな制限を受けることになるし,たいへんな気を使うことになる。

 面倒なことにはなるが,IE3 用の CSS ファイルを用意して,ブラウザ検出をサーバあるいはクライアントサイドスクリプトで行い,IE3 なら専用の CSS を,それ以外には CSS1 に準拠した CSS ファイルをあてがうという方法をとることもある。Academic HTML 4.0 もこの方法で CSS ファイルを切り替えている。IE3 をご利用の方には見苦しい点があることをお詫びする。スクリプティングの要点は先ほども触れた Microsoft 社のドキュメントを熟読されたい。

 実際は IE3 に限らず,Netscape Navigator 4.0 でも同様の問題が起こってしまう。結局 Academic HTML 4.0 では 3 つの異なる CSS を選択させている。現在,主要なブラウザの最新バージョンでは,CSS1 の実装に関して実用レベルで問題が生じることは少ないだろう。今後さらに高い完成度での実装も期待され,CSS はより利用しやすい環境となるだろう。このような状況下で,IE3 または Netscape Navigator 4.0 は,“CSS に対応していないブラウザ”と割り切って,これらのブラウザには CSS が適用されないようにするという方法もある。