この例では:
<style>
/* Default links */
a {
color: #0F0; /* Green */
}
/* Header links */
#header a {
color: #F00; /* Red */
}
/* Login link */
#login {
color: #00F; /* Blue */
}
</style>
<header id="header">
<p><a href="#">header link</a> is red</p>
<p><a id="login" href="#">login link</a> is not blue</p>
</header>
ログインリンクを青色にする必要があるのは論理的ではありませんか?
私は、宣言が同じ起源と同じ重要性を持っていることを知っているので、それらをスコアリングする必要があります(セレクターの特異性)。
セレクターの特異性を計算するために、セレクターごとにテーブルを作成しました。
A =インラインスタイルの数:0
B = IDの数:0
C =クラスの数:0
D =要素の数:0
したがって、ログイン要素には、彼の色に関連する3つの衝突があります:a、 #header a、#login
要素(A、B、C、D)
a(0、0、0、1)= 1
#header a(0、1、0、1)= 101
#login(0、1、0、0)= 100
セレクター「#headera」が最大のスコアだったので勝ちました。
だが
セレクター「#login」を「a#login」に変更すると、次のようになります。a
#login(0、1、0、1)= 101
引き分けで最後に勝つため、セレクター「#headera」が失われます。それが宣言されました。
だから、私が理解できないことは:
「#headera」セレクターは多くの要素を参照し、IDセレクター(たとえば#login)は1つの要素を参照するだけなので、IDセレクター宣言をその要素に適用するのは論理的ですよね?IDセレクターは、インラインスタイルと同じように、基本的に可能な限り最も具体的なものでなければならないと思うので、このCSS優先順位ロジックを本当に理解することはできません。
PS:私の悪い英語でごめんなさい:)