IE 7 と color: inherit

http://hxxk.jp/2006/11/19/2347

記事データ

投稿者

真琴

投稿日時

2006-11-19T23:47+09:00

タグ
概要

CSS2 が勧告されて 8 年半が経っていますが、 IE 7 はまだ CSS1 にこそ準拠していても、 CSS2 には準拠していません。よって、 color プロパティに対して inherit 値を指定しても有効となりません。

リプライ

リプライはまだありません。

記事本文

IE だと pre 要素内のテキストの文字色がおかしい ?

これまで検証していなかったのかよ、と言われてしまうくらい気付いていなかったんですが、 pre 要素内のテキストの色が IE だと意図しないものになっていました。

IE 6
  • IE 6 では color: #000;
IE 7
  • IE 7 では color: #000;
Firefox 1.5.0.8
  • Firefox 1.5.0.8 では color: #ffa;

pre 要素やテキストの色の関連の CSS はどう指定しているかというと、

* {
  color: #000;
}

pre {
  color: #ffa;
}

pre code,
pre samp,
pre code var,
pre samp var {
  color: inherit;
}

のように、ユニバーサルセレクタで全ての要素の文字色を #000 とした上で、 pre 要素の文字色を #ffa としています。 それだけでは pre 要素内に更に code 要素や samp 要素や var 要素が出現した際に、 pre 要素の要素セレクタの指定ではなくユニバーサルセレクタの指定にマッチしてしまうため、 inherit 値を指定しているのですが......

IE では #000 の方が有効になっています。 またユニバーサルセレクタの取り扱いのせいか !? とも疑いましたが、 IRC チャンネル #hxxk で尋ねてみると、 My "User-StyleSheet" - Examples of CSS にて IEはまだinherit値が有効にならない と示されていることを教えていただきました。 IE 6 ではそういったことがあるという話は聞いたことがありましたが、 IE 7 でも改善されていなかったんですね......。

ユニバーサルセレクタでの指定をしないか、あるいは inherit 値ではなくて pre 要素と同じ色を指定すれば解決するのですが、何か釈然としないなあ。

Microsoft と CSS

何で inherit 値に対応してないんだようってことで仕様を見てみると、 CSS2 の color プロパティでは Value: <color> | inherit と、取り得る値に inherit 値が示されています ( これは CSS 2.1 の color プロパティでも同様です ) が、CSS1 の color プロパティでは Value: <color> と、 inherit 値は取り得る値に含まれていません。

CSS2CSS 2.1 の仕様は一通り読んでいましたが、 CSS1 はあまり読んでいなかったので、 inherit 値が含まれていないのも初めて知りました。 なるほどー、 CSS1 で定義されていないならしょうがないねえ......って、 CSS 2.1 の歩みの自分用まとめでも仕様の日付について触れましたが、 CSS2 が勧告となってもう 8 年半くらい経っているですよねえ。 いくら IE が ***( お好きな罵倒語を入れてください ) であるとは言え、まだ勧告に至っていない CSS 2.1 に随時準拠してくれとまでは望まないから、 CSS2 くらいは準拠していましょうよと IRC で呟いていたら、「そもそも CSS2 に準拠したって話は無かったですよ」というご指摘をいただきました。

なるほど MSDNcolor Attribute | color Property (A, ADDRESS, APPLET, ...) を見てみると、 This property is defined in World Wide Web Consortium (W3C) Document Object Model (DOM) Level 1 and is defined in Cascading Style Sheets (CSS), Level 1 (CSS1). と、 CSS1 への準拠は書かれてあっても CSS2 への準拠は書かれていませんね。 IE はやっぱり 7 になってもこの程度か......という思いです。

なお、 IE 8 は inherit 値に対応しているようです。

リプライ

リプライはまだ送られていないか、管理者の承認待ち状態です。

この記事に対するご意見やご質問、ご感想などありましたらこのフォームに簡潔に記入して下さい。 簡潔に記入できない場合や、関連記事にてご意見をお寄せいただく場合は、ご自身の weblog にて記事を書かれた上で あてにトラックバックとして送信してください。

記入フォーム

補足情報

著作、講演、制作実績など