この日記はMozillaのプロダクトへの貢献者としての私の成果を中心に、気になったバグやWeb界隈の話題について書いていますが、 断り書きがある場合を除き、いかなる団体のオフィシャルな見解ではありません。あくまでも個人的なものです。 Mozilla Foundation、Mozilla Corporation、及び関連企業の公式情報ではないことに注意してください。

現在、XHTML 1.0 (もどき)から、HTML5なコンテンツに修正中です。古い日記は修正が完了していませんので表示が崩れます。 順次、修正していく予定ですのでしばらくお待ちください。

もずはっく日記(2007年3月)

2007年3月17日

Bug 5127 [CSS2][Cairo] outlineプロパティから'invert'値をドロップすべき
初回投稿日時: 2007年03月17日02時34分40秒
最終更新日時: 2007年03月17日02時39分52秒
カテゴリ: CSS Mozilla Core
SNS: (list)

修正完了。

この修正により、trunkではoutline-colorinvert値がサポートされなくなった。invertを指定しても色が設定されないのではなく、エラーになってしまうことに要注意

つまり、outline: 1px solid invert;とすると、Gecko1.9ではエラーになり、この行は無視される。つまり、outlineプロパティでの色指定でinvert値を指定するのはクロスブラウザなスタイルを書くためのノウハウではタブーとなる。次のような例を考えてみよう。

a:link {
  outline: 1px dotted;
  outline: 3px solid invert;
}

この例のような状況があり得ないと思うなら、ひとつめのスタイル指定をUAのデフォルトスタイルシートに入っている指定だと考えると、よくある話であると思ってもらえると思う。この例の表示結果は、invert値を解釈するUAでは太さ3ピクセルの実線として表示されるが、Gecko1.9では二つ目のスタイル指定を無視するために、太さ1ピクセルの点線として表示される(色はcolor値になる)。

つまり、outline-styleoutline-widthのみを指定し、残りをUAデフォルトの状態にしたい、というのが2行目の意図である場合(大抵は反転させたいのではなく、そうだろう)、outline色を指定しなければ良い。色の指定が短縮プロパティで指定されていない場合、outline-color値はリセットされ、invertがデフォルトで用いられる他のUAではinvertが、Gecko1.9ではinvertがサポートできないUAのデフォルト値であるcolor値が設定されることになる。

つまり、outline: 3px solid;と書くのが意図したものとしては正解。この場合、色はUAの初期値が利用され、outline-styleoutline-widthのみを変更することができる。

関連するかもしれないエントリ

bug 5127を含むエントリ