Cascading, Inheritance, and Precedence

   Okay, this latest thread has brought up an interesting question.  The
original question from Andi Hindle was, in summary:

Given the CSS rules...
     body {color : #FFFFFF;}
     h1 {color : #FF0000;}

...will H1 text be white, or red?

   I originally claimed that specificity would cause H1s to be red, and
then reversed myself, because under the weighting rules defined in Cascade
Rule 4, both statements have the same specificity.  Therefore, the tie is
broken by Rule 5, which says later declarations win out over earlier ones.
   This brings me to my question.  Given the CSS rules...
     h1 {color : #FF0000;}
     body {color : #FFFFFF;}

...NOW what color will H1 text be?  Under my previous reasoning, it should
be white, because the BODY rule comes after the H1 rule.  This just seems
wrong, though.
   Then I figured it out-- I think.  The answer seems to be in Cascade Rule
1, which states:

    "Find all declarations that apply to the element/property in question.
     Declarations apply if the selector matches the element in question.
     If no declarations apply, the inherited value is used."

Since there are H1 rules which do apply, those rules override any inherited
property values.
   However, this is only the case if Cascade Rules with lower numbers have
higher precedence-- something which the specification does not define.
Does Rule 1 have more weight than Rule 5?  If so, the problem is solved.
If not... well, ick.

Eric A. Meyer  -  -
 Hypermedia Systems Manager
 Digital Media Services      
 Case Western Reserve University

Received on Friday, 19 September 1997 11:06:33 UTC