4

我在这里查看了类似的问题,但我没有找到一个特别针对我的案例的问题。

如果我正确阅读了这篇文章:http: //css-tricks.com/specifics-on-css-specificity/

那么正在发生的事情对我来说没有意义。有人可以解释这是由于地方,继承还是特殊性吗?我已经删除了所有不相关的 CSS。

CSS

a:link {font-size:0.875em;color:#005984}
.button {color:#fff}

HTML

<a class="button">Awesome call to action</a>

我最终得到一个带有蓝色文本而不是白色的按钮。现在, a 是一个元素,所以它应该比 .button 类具有更低的特异性,不是吗?

谢谢你的时间。

4

2 回答 2

9

这是由于特殊性:虽然a它是一个元素类型选择器,它没有类选择器那么具体,但它伴随着一个:link伪类,它同样特定于你的.button类。因此,类型 + 伪类将比类更具体。

这里没有继承,因为我可以看到没有应用于您的元素的父元素样式。继承是指采用父元素的样式。当您看到显示蓝色而不是白色的链接时,这就是级联工作,而不是继承。

局部性不是 CSS 术语(至少不在其词汇表中),所以我不确定您的意思。

如果你需要你的号召性用语按钮是白色的,只需给它一个a选择器,这样你的选择器同样具体,最后的声明将优先:

a:link {font-size:0.875em;color:#005984}
a.button {color:#fff}
于 2012-06-12T15:30:29.037 回答
2

选择器的特异性计算如下:
- 统计选择器中 ID 选择器的数量(= a)
- 统计选择器中的类选择器、属性选择器和伪类的数量(= b)
- 统计类型的数量选择器中的选择器和伪元素 (= c)
- 忽略通用选择器

否定伪类中的选择器与其他选择器一样计算,但否定本身不计为伪类。

连接三个数字 abc(在具有大基数的数字系统中)给出了特异性。

所以:

a:link
- a=0
- b=1
- c=1
- 结果 = 011

.button
- a=0
- b=1
- c=0
- 结果 = 010

结果a:link高于.button

修复:无论如何,除了标签:link之外什么都不能工作,所以指定是多余的。改为使用,这将解决问题(提供定义)aa:link:link.button :link

于 2012-06-12T15:32:42.607 回答