Many people are aware of the cascade but simply assume that rules defined later override earlier rules - without taking into account the selectors specificity. Either getting into trouble because of specificity and attempt to compensate with a splattering of !important rules, or simply just don't make use of it.
Specificity overrides the cascade.
EDIT: An example...
p.example {
color: red;
}
.example {
color: blue;
}
Some might wonder what's the point of specifying the element name in the selector of the first rule. After all, the second rule is more generic and more 'useful'. But the first rule, by specifying the elements name p
, has a higher specificity and overrides the 2nd rule in the cascade, regardless of the order in which they are defined. All p
s with the example
class will be red, not blue.
If you edit a style rule and it apparently does not change, some will assume that there must be a style defined later (in the cascade) that is overriding it, but there could also be a rule with a higher specificity defined anywhere that is overriding it.
This could also be important if you are combining stylesheets and expecting the later to override the former. Despite having the same class names, specificity could prevent this from happening.