【发布时间】:2012-08-16 05:14:21
【问题描述】:
在本例中:
<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 b>
D = 元素数:0
所以login元素有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
选择器“#header a”获胜,因为它的得分最高。
但是
如果我们将选择器“#login”更改为“a#login”,我们将得到:
a#login (0, 1, 0, 1) = 101
选择器“#header a”丢失,因为平局赢得了最后宣布的。
所以,我无法理解的是:
由于“#header a”选择器引用了许多元素,而 ID 选择器(例如 #login)只引用了一个元素,因此我们希望将 ID 选择器声明应用于该元素是合乎逻辑的,对吗?我真的无法理解这个 CSS 优先逻辑,因为我认为 ID 选择器基本上必须是最具体的东西,就像内联样式一样。
P.S.:对不起我的英语不好:)
【问题讨论】:
-
可能相关或不相关,但如果你有相同的特异性,最后一个总是赢。
-
@Jawad OP 知道...请阅读...
-
@Christoph:是的,我明白了。也许这就是我只评论的原因。
-
(0, 0, 0, 1) 不等于 1,(0, 1, 0, 1) 不等于 101。这不是特异性系统的工作原理。
标签: html css css-selectors css-specificity css-cascade