CSS でのカスケードの基本原則は、1 つの要素と、同じ要素に適用される 1 つ以上の CSS ルールがあることです (要素がそれらのセレクターに一致するため)。このプロセスでは、適用可能なすべてのスタイルが計算され、競合があれば解決 (またはカスケード) されてから適用されます。
ルールとその宣言が相互に排他的である場合、解決する競合がなく、オーバーライドするものが何もないため、それらのいずれも他のルール自体に「勝つ」ことはありません。たとえば、次のルールがあるとします。
#id1 {
color: red;
}
.class1 {
border-width: 1px;
}
.class2 {
border-style: dashed;
}
次に、要素には赤いテキストと 1 ピクセルの太さの赤い破線の境界線が表示されます。競合がないため、すべてが効果的に組み合わされます。(特殊な動作のため、境界線が赤くなっていることに注意してください。)
jsFiddle プレビュー
同じプロパティの値をオーバーライドする必要があるため、セレクターの特異性とカスケードが関連するのは、複数のルールで宣言された同じプロパティがある場合のみです。その場合、すでに述べたように、ID はクラスよりも優先され、同様に固有のルールが上から下に適用されます。セレクターの特異性について読んでください。
たとえば、次のルールがあるとします。
#id1 {
color: red;
}
.class1 {
text-decoration: underline;
color: green;
}
.class2 {
text-decoration: none;
color: blue;
}
次に、要素には装飾のない赤いテキストが表示されます。
jsFiddle プレビュー
これはすべて同じ要素に適用する必要があることに注意してください。ID のみを持つ親と、クラスのみを持つ子がある場合、まったく別の要素を扱っているため、これは当てはまりません。代わりに機能するのは継承です。これは、上記のリンク先のドキュメントでも説明されています。