CSS在特异性计算中与伪类和伪元素的差异



我学会了如何根据http://reference.sitepoint.com/css/specificity然而,基于这个参考,我不明白伪类(来自c)和伪元素(来自d)之间的区别是什么?

例如,

input[type="text"]:hover

hover是伪类(来自c)还是伪元素(来自d)?

input[type="text"].error相比,哪一种具有更高的特异性?

伪类(c)的特异性为10

伪元素(d)具有1 的特异性

两个

input[type="text"]:hover

input[type="text"].error

特异性为21

input(元素-"d")=1

[type="text"](属性-"c")=10

:hover(伪类-'c')=10

.error(类别-"c")=10

还有一些在线的特异性计算器,比如这个。

引用的页面与CSS规范(如CSS3 Selectors,第9节)相同。计算选择器的特异性,尽管不太详细,也不具有权威性。关键是,在特定情况下,伪类选择器被视为类选择器,而伪元素选择器则被视为类型选择器(标记名)。这意味着伪类选择器比伪元素选择器更具体。这背后的想法是,类(和伪类)以更具体的方式指代元素,比如"凯迪拉克"(可以说是一类汽车)比"汽车"(可以这么说是一种东西)更具体。

关于:hover,重要的是如何在CSS规范中指定它。碰巧它是一个伪类选择器。这是自然的,因为它指的是处于特定状态的元素,因此可以将其定性为"动态类"。

因此,input[type="text"]:hoverinput[type="text"].error具有相同的特异性。

最新更新