1

私は2つの単純なcssスタイルを持っています:

div
{
color: white;
}    

body
{
color: gray;
}

これらのそれぞれの優先順位の値は0,0,0,1です。したがって、規則に従って、2番目のスタイルは最初のスタイルをオーバーライドする必要があり、divで囲まれたすべてのテキストは白ではなく灰色である必要があります。これは何が起こるかではありません。divスタイルは、その位置に関係なく優先されます。おそらく、どこかで、より具体的な要素がより具体的でない要素よりも優先されるという何かがありますが、私はそう言うものを見つけることができません。この動作が文書化される可能性のある場所を誰かに教えてもらえますか?

4

1 に答える 1

4

両方のルールが同じ特異性 (0,0,0,1) を持っていることは間違いありませんが、同じように div 要素をターゲットにしているわけではありません。

body ルール (灰色のテキスト) は div に一致しますが、継承のみを介して - div ルール (白いテキスト) は div に直接一致します。

要素が親から値を継承する場合、その要素は計算された値を継承します。W3C 仕様で宣言されているように、すべての要素は 4 段階の計算を経ます。

http://www.w3.org/TR/CSS2/cascade.html#value-stages

プロパティの最終的な値は、4 段階の計算の結果です。値は仕様 (「指定値」) によって決定され、継承に使用される値 (「計算値」) に解決され、変換されます。必要に応じて絶対値 (「使用値」) に変換し、最終的にローカル環境の制限に従って変換します (「実際の値」)。

そのため、div では白が唯一の「指定された」値であるため、優先されます。灰色は body タグからの継承による計算値にすぎません。

少なくとも、それが私が仕様を解釈した方法です。

于 2012-09-06T20:06:20.617 に答える