CSS はブラウザの対応についていくぶんかの自由度がある。サポートが必須でないものについて再現されないことに文句を言ってもしかたがない。もうひとつ,CSS1 に“おかしな”対応をしている Internet Explorer 3.0 のことについても触れておこう。
CSS1 の規格は二重構造になっている。“これだけは最低限サポートされなければならない”必須のものというなればオプショナルのものとがある。必須のものは CSS1 Core という。
このことは今までとくに触れなかったが,ときどき“ブラウザによっては……しなくてもよい”という記述で記しておいた。これが CSS1 Core 外の CSS1 の部分である。したがって,CSS のデザインに際しては,それらがサポートされない可能性を覚悟する必要がある。
CSS1 Core 外のフィーチャーについてまとめておくことにしよう。
以上が CSS1 Core 外の部分である。現在の主要なブラウザは,少なくとも実用レベルでは CSS1 Core を満たしていると言えよう。
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 が適用されないようにするという方法もある。